<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::visualization::ImageViewer类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1visualization_1_1_image_viewer.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-static-methods">静态 Protected 成员函数</a> &#124;
<a href="#pri-types">Private 类型</a> &#124;
<a href="#pri-methods">Private 成员函数</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="classpcl_1_1visualization_1_1_image_viewer-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::visualization::ImageViewer类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html" title="ImageViewer is a class for 2D image visualization.">ImageViewer</a> is a class for 2D image visualization.  
 <a href="classpcl_1_1visualization_1_1_image_viewer.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="image__viewer_8h_source.html">image_viewer.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::visualization::ImageViewer 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1visualization_1_1_image_viewer.png" usemap="#pcl::visualization::ImageViewer_map" alt=""/>
  <map id="pcl::visualization::ImageViewer_map" name="pcl::visualization::ImageViewer_map">
<area href="classpcl_1_1visualization_1_1_range_image_visualizer.html" title="Range image visualizer class." alt="pcl::visualization::RangeImageVisualizer" shape="rect" coords="0,56,235,80"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1visualization_1_1_image_viewer_1_1_exit_callback.html">ExitCallback</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1visualization_1_1_image_viewer_1_1_exit_main_loop_timer_callback.html">ExitMainLoopTimerCallback</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1visualization_1_1_image_viewer_1_1_layer.html">Layer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal structure describing a layer.  <a href="structpcl_1_1visualization_1_1_image_viewer_1_1_layer.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1visualization_1_1_image_viewer_1_1_layer_comparator.html">LayerComparator</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a94b24cb82bcc70972b6b4e73ab22536d"><td class="memItemLeft" align="right" valign="top"><a id="a94b24cb82bcc70972b6b4e73ab22536d"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html">ImageViewer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a94b24cb82bcc70972b6b4e73ab22536d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:ab67fc7734463f333ef483e0ec1eaeab0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab67fc7734463f333ef483e0ec1eaeab0">ImageViewer</a> (const std::string &amp;window_title=&quot;&quot;)</td></tr>
<tr class="memdesc:ab67fc7734463f333ef483e0ec1eaeab0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ab67fc7734463f333ef483e0ec1eaeab0">更多...</a><br /></td></tr>
<tr class="separator:ab67fc7734463f333ef483e0ec1eaeab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac139b68072915671fd88dcebd97df1a"><td class="memItemLeft" align="right" valign="top"><a id="aac139b68072915671fd88dcebd97df1a"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aac139b68072915671fd88dcebd97df1a">~ImageViewer</a> ()</td></tr>
<tr class="memdesc:aac139b68072915671fd88dcebd97df1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:aac139b68072915671fd88dcebd97df1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3d46fb79a3a66b9a577808ed7169c9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab3d46fb79a3a66b9a577808ed7169c9f">showMonoImage</a> (const unsigned char *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ab3d46fb79a3a66b9a577808ed7169c9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a monochrome 2D image on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ab3d46fb79a3a66b9a577808ed7169c9f">更多...</a><br /></td></tr>
<tr class="separator:ab3d46fb79a3a66b9a577808ed7169c9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a764f707517a6f5a94d6afd9441508794"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a764f707517a6f5a94d6afd9441508794">addMonoImage</a> (const unsigned char *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a764f707517a6f5a94d6afd9441508794"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a764f707517a6f5a94d6afd9441508794">更多...</a><br /></td></tr>
<tr class="separator:a764f707517a6f5a94d6afd9441508794"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbcd91e2f16a9e11e72aec9e5fb74317"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#afbcd91e2f16a9e11e72aec9e5fb74317">showMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt;::ConstPtr &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:afbcd91e2f16a9e11e72aec9e5fb74317"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a monochrome 2D image on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#afbcd91e2f16a9e11e72aec9e5fb74317">更多...</a><br /></td></tr>
<tr class="separator:afbcd91e2f16a9e11e72aec9e5fb74317"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0ed6bc71fcd05d3c77148d76368915a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ad0ed6bc71fcd05d3c77148d76368915a">addMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt;::ConstPtr &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ad0ed6bc71fcd05d3c77148d76368915a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ad0ed6bc71fcd05d3c77148d76368915a">更多...</a><br /></td></tr>
<tr class="separator:ad0ed6bc71fcd05d3c77148d76368915a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca066cf44d842ea7e8a11da86fe56e48"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aca066cf44d842ea7e8a11da86fe56e48">showMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt; &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:aca066cf44d842ea7e8a11da86fe56e48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a monochrome 2D image on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#aca066cf44d842ea7e8a11da86fe56e48">更多...</a><br /></td></tr>
<tr class="separator:aca066cf44d842ea7e8a11da86fe56e48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4717d079f67880bfc7a80b3731b6eada"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a4717d079f67880bfc7a80b3731b6eada">addMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt; &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a4717d079f67880bfc7a80b3731b6eada"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a4717d079f67880bfc7a80b3731b6eada">更多...</a><br /></td></tr>
<tr class="separator:a4717d079f67880bfc7a80b3731b6eada"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dd0425191252de387726ab970b330a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a7dd0425191252de387726ab970b330a7">showMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt;::ConstPtr &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a7dd0425191252de387726ab970b330a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a monochrome 2D image on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a7dd0425191252de387726ab970b330a7">更多...</a><br /></td></tr>
<tr class="separator:a7dd0425191252de387726ab970b330a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cb5442511b386e1463680ff0f01f288"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a3cb5442511b386e1463680ff0f01f288">addMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt;::ConstPtr &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a3cb5442511b386e1463680ff0f01f288"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a3cb5442511b386e1463680ff0f01f288">更多...</a><br /></td></tr>
<tr class="separator:a3cb5442511b386e1463680ff0f01f288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac22a20ad2eb7e466966d74a043a52cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aac22a20ad2eb7e466966d74a043a52cb">showMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt; &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:aac22a20ad2eb7e466966d74a043a52cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a monochrome 2D image on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#aac22a20ad2eb7e466966d74a043a52cb">更多...</a><br /></td></tr>
<tr class="separator:aac22a20ad2eb7e466966d74a043a52cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85f3a0290a4b9e4c29b847e8aa06679d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a85f3a0290a4b9e4c29b847e8aa06679d">addMonoImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt; &amp;cloud, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a85f3a0290a4b9e4c29b847e8aa06679d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a85f3a0290a4b9e4c29b847e8aa06679d">更多...</a><br /></td></tr>
<tr class="separator:a85f3a0290a4b9e4c29b847e8aa06679d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33e79bc49719cc7e2005f3cf76bff1f6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a33e79bc49719cc7e2005f3cf76bff1f6">showRGBImage</a> (const unsigned char *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;rgb_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a33e79bc49719cc7e2005f3cf76bff1f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a 2D <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> image on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a33e79bc49719cc7e2005f3cf76bff1f6">更多...</a><br /></td></tr>
<tr class="separator:a33e79bc49719cc7e2005f3cf76bff1f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3340b7e8cc80f3cf4276dfcbb589fe5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab3340b7e8cc80f3cf4276dfcbb589fe5">addRGBImage</a> (const unsigned char *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;rgb_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ab3340b7e8cc80f3cf4276dfcbb589fe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ab3340b7e8cc80f3cf4276dfcbb589fe5">更多...</a><br /></td></tr>
<tr class="separator:ab3340b7e8cc80f3cf4276dfcbb589fe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d4270eb07ff05d02ec9ddbb417691c7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a3d4270eb07ff05d02ec9ddbb417691c7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a3d4270eb07ff05d02ec9ddbb417691c7">showRGBImage</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;cloud, const std::string &amp;layer_id=&quot;rgb_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a3d4270eb07ff05d02ec9ddbb417691c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a 2D image on screen, obtained from the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> channel of a point cloud.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a3d4270eb07ff05d02ec9ddbb417691c7">更多...</a><br /></td></tr>
<tr class="separator:a3d4270eb07ff05d02ec9ddbb417691c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0c9e8a98da3768aef5dd08df9822bdf"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac0c9e8a98da3768aef5dd08df9822bdf"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ac0c9e8a98da3768aef5dd08df9822bdf">addRGBImage</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;cloud, const std::string &amp;layer_id=&quot;rgb_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ac0c9e8a98da3768aef5dd08df9822bdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ac0c9e8a98da3768aef5dd08df9822bdf">更多...</a><br /></td></tr>
<tr class="separator:ac0c9e8a98da3768aef5dd08df9822bdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58b93c1bd507c07366a80e52f8c20a61"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a58b93c1bd507c07366a80e52f8c20a61"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a58b93c1bd507c07366a80e52f8c20a61">showRGBImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;cloud, const std::string &amp;layer_id=&quot;rgb_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a58b93c1bd507c07366a80e52f8c20a61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a 2D image on screen, obtained from the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> channel of a point cloud.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a58b93c1bd507c07366a80e52f8c20a61">更多...</a><br /></td></tr>
<tr class="separator:a58b93c1bd507c07366a80e52f8c20a61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af350a394ba65506f84f2b140c22b5063"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:af350a394ba65506f84f2b140c22b5063"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#af350a394ba65506f84f2b140c22b5063">addRGBImage</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;cloud, const std::string &amp;layer_id=&quot;rgb_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:af350a394ba65506f84f2b140c22b5063"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#af350a394ba65506f84f2b140c22b5063">更多...</a><br /></td></tr>
<tr class="separator:af350a394ba65506f84f2b140c22b5063"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a775047bc2b18889522caab74751ae6f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a775047bc2b18889522caab74751ae6f3">showFloatImage</a> (const float *data, unsigned int width, unsigned int height, float min_value=std::numeric_limits&lt; float &gt;::min(), float max_value=std::numeric_limits&lt; float &gt;::max(), bool grayscale=false, const std::string &amp;layer_id=&quot;float_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a775047bc2b18889522caab74751ae6f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a 2D image (float) on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a775047bc2b18889522caab74751ae6f3">更多...</a><br /></td></tr>
<tr class="separator:a775047bc2b18889522caab74751ae6f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac29c3b5fa725cb452135733e13332d6c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ac29c3b5fa725cb452135733e13332d6c">addFloatImage</a> (const float *data, unsigned int width, unsigned int height, float min_value=std::numeric_limits&lt; float &gt;::min(), float max_value=std::numeric_limits&lt; float &gt;::max(), bool grayscale=false, const std::string &amp;layer_id=&quot;float_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ac29c3b5fa725cb452135733e13332d6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a float 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ac29c3b5fa725cb452135733e13332d6c">更多...</a><br /></td></tr>
<tr class="separator:ac29c3b5fa725cb452135733e13332d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e6d9e7fa50c79a804230474fe572b98"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a8e6d9e7fa50c79a804230474fe572b98">showShortImage</a> (const unsigned short *short_image, unsigned int width, unsigned int height, unsigned short min_value=std::numeric_limits&lt; unsigned short &gt;::min(), unsigned short max_value=std::numeric_limits&lt; unsigned short &gt;::max(), bool grayscale=false, const std::string &amp;layer_id=&quot;short_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a8e6d9e7fa50c79a804230474fe572b98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a 2D image (unsigned short) on screen.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a8e6d9e7fa50c79a804230474fe572b98">更多...</a><br /></td></tr>
<tr class="separator:a8e6d9e7fa50c79a804230474fe572b98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a53f1ab682bd6031a613683cf79df34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a9a53f1ab682bd6031a613683cf79df34">addShortImage</a> (const unsigned short *short_image, unsigned int width, unsigned int height, unsigned short min_value=std::numeric_limits&lt; unsigned short &gt;::min(), unsigned short max_value=std::numeric_limits&lt; unsigned short &gt;::max(), bool grayscale=false, const std::string &amp;layer_id=&quot;short_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a9a53f1ab682bd6031a613683cf79df34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a short 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a9a53f1ab682bd6031a613683cf79df34">更多...</a><br /></td></tr>
<tr class="separator:a9a53f1ab682bd6031a613683cf79df34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2406ecea1e68be3028bb4861478f5c2b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a2406ecea1e68be3028bb4861478f5c2b">showAngleImage</a> (const float *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;angle_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a2406ecea1e68be3028bb4861478f5c2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a 2D image on screen representing angle data.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a2406ecea1e68be3028bb4861478f5c2b">更多...</a><br /></td></tr>
<tr class="separator:a2406ecea1e68be3028bb4861478f5c2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad46e6a0d2d9b1e1a1d4a0e56b3e28bd3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ad46e6a0d2d9b1e1a1d4a0e56b3e28bd3">addAngleImage</a> (const float *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;angle_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ad46e6a0d2d9b1e1a1d4a0e56b3e28bd3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an angle 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ad46e6a0d2d9b1e1a1d4a0e56b3e28bd3">更多...</a><br /></td></tr>
<tr class="separator:ad46e6a0d2d9b1e1a1d4a0e56b3e28bd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83262fe4addf159963e9eeb5bc918153"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a83262fe4addf159963e9eeb5bc918153">showHalfAngleImage</a> (const float *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;half_angle_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a83262fe4addf159963e9eeb5bc918153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show a 2D image on screen representing half angle data.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a83262fe4addf159963e9eeb5bc918153">更多...</a><br /></td></tr>
<tr class="separator:a83262fe4addf159963e9eeb5bc918153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60fa47b0538b35974d7f63e741c5ef83"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a60fa47b0538b35974d7f63e741c5ef83">addHalfAngleImage</a> (const float *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;half_angle_image&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a60fa47b0538b35974d7f63e741c5ef83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a half angle 2D image layer, but do not render it (use spin/spinOnce to update).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a60fa47b0538b35974d7f63e741c5ef83">更多...</a><br /></td></tr>
<tr class="separator:a60fa47b0538b35974d7f63e741c5ef83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8635790ba434ac25d5996b6747a35281"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a8635790ba434ac25d5996b6747a35281">markPoint</a> (size_t u, size_t v, Vector3ub fg_color, Vector3ub bg_color=red_color, double radius=3.0, const std::string &amp;layer_id=&quot;points&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a8635790ba434ac25d5996b6747a35281"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pixel at coordinates(u,v) to color while setting the neighborhood to another  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a8635790ba434ac25d5996b6747a35281">更多...</a><br /></td></tr>
<tr class="separator:a8635790ba434ac25d5996b6747a35281"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a811c0ab2c8ef24d2edd03f235630121b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a811c0ab2c8ef24d2edd03f235630121b">markPoints</a> (const std::vector&lt; int &gt; &amp;uv, Vector3ub fg_color, Vector3ub bg_color=red_color, double size=3.0, const std::string &amp;layer_id=&quot;markers&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a811c0ab2c8ef24d2edd03f235630121b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pixel at coordinates(u,v) to color while setting the neighborhood to another  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a811c0ab2c8ef24d2edd03f235630121b">更多...</a><br /></td></tr>
<tr class="separator:a811c0ab2c8ef24d2edd03f235630121b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0506f8e1f6d8ba95973dfdfdeb131ba0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a0506f8e1f6d8ba95973dfdfdeb131ba0">markPoints</a> (const std::vector&lt; float &gt; &amp;uv, Vector3ub fg_color, Vector3ub bg_color=red_color, double size=3.0, const std::string &amp;layer_id=&quot;markers&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a0506f8e1f6d8ba95973dfdfdeb131ba0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pixel at coordinates(u,v) to color while setting the neighborhood to another (float coordinates version).  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a0506f8e1f6d8ba95973dfdfdeb131ba0">更多...</a><br /></td></tr>
<tr class="separator:a0506f8e1f6d8ba95973dfdfdeb131ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bf8630b973a4b0497f241568d0e6baa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a0bf8630b973a4b0497f241568d0e6baa">setWindowTitle</a> (const std::string &amp;name)</td></tr>
<tr class="memdesc:a0bf8630b973a4b0497f241568d0e6baa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the window title name  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a0bf8630b973a4b0497f241568d0e6baa">更多...</a><br /></td></tr>
<tr class="separator:a0bf8630b973a4b0497f241568d0e6baa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78653afaa6dc910ce241b9bf8cea45f6"><td class="memItemLeft" align="right" valign="top"><a id="a78653afaa6dc910ce241b9bf8cea45f6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a78653afaa6dc910ce241b9bf8cea45f6">spin</a> ()</td></tr>
<tr class="memdesc:a78653afaa6dc910ce241b9bf8cea45f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spin method. Calls the interactor and runs an internal loop. <br /></td></tr>
<tr class="separator:a78653afaa6dc910ce241b9bf8cea45f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3eb6e9560da820df593c85dbbd47af1c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a3eb6e9560da820df593c85dbbd47af1c">spinOnce</a> (int time=1, bool force_redraw=true)</td></tr>
<tr class="memdesc:a3eb6e9560da820df593c85dbbd47af1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spin once method. Calls the interactor and updates the screen once.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a3eb6e9560da820df593c85dbbd47af1c">更多...</a><br /></td></tr>
<tr class="separator:a3eb6e9560da820df593c85dbbd47af1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a768b636bbac4ee67a5aa86fd4b239b12"><td class="memItemLeft" align="right" valign="top">boost::signals2::connection&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a768b636bbac4ee67a5aa86fd4b239b12">registerKeyboardCallback</a> (void(*callback)(const <a class="el" href="classpcl_1_1visualization_1_1_keyboard_event.html">pcl::visualization::KeyboardEvent</a> &amp;, void *), void *cookie=NULL)</td></tr>
<tr class="memdesc:a768b636bbac4ee67a5aa86fd4b239b12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a callback function for keyboard events  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a768b636bbac4ee67a5aa86fd4b239b12">更多...</a><br /></td></tr>
<tr class="separator:a768b636bbac4ee67a5aa86fd4b239b12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add4cf1ce0536ae6ba7b42f316e6d368c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:add4cf1ce0536ae6ba7b42f316e6d368c"><td class="memTemplItemLeft" align="right" valign="top">boost::signals2::connection&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#add4cf1ce0536ae6ba7b42f316e6d368c">registerKeyboardCallback</a> (void(T::*callback)(const <a class="el" href="classpcl_1_1visualization_1_1_keyboard_event.html">pcl::visualization::KeyboardEvent</a> &amp;, void *), T &amp;instance, void *cookie=NULL)</td></tr>
<tr class="memdesc:add4cf1ce0536ae6ba7b42f316e6d368c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a callback function for keyboard events  <a href="classpcl_1_1visualization_1_1_image_viewer.html#add4cf1ce0536ae6ba7b42f316e6d368c">更多...</a><br /></td></tr>
<tr class="separator:add4cf1ce0536ae6ba7b42f316e6d368c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67179cecfc3ea0f0c1e16a33089cb24b"><td class="memItemLeft" align="right" valign="top">boost::signals2::connection&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a67179cecfc3ea0f0c1e16a33089cb24b">registerKeyboardCallback</a> (boost::function&lt; void(const <a class="el" href="classpcl_1_1visualization_1_1_keyboard_event.html">pcl::visualization::KeyboardEvent</a> &amp;)&gt; cb)</td></tr>
<tr class="memdesc:a67179cecfc3ea0f0c1e16a33089cb24b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a callback boost::function for keyboard events  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a67179cecfc3ea0f0c1e16a33089cb24b">更多...</a><br /></td></tr>
<tr class="separator:a67179cecfc3ea0f0c1e16a33089cb24b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea7736ed1e3710dc9fcd210c8a41e509"><td class="memItemLeft" align="right" valign="top">boost::signals2::connection&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aea7736ed1e3710dc9fcd210c8a41e509">registerMouseCallback</a> (void(*callback)(const <a class="el" href="classpcl_1_1visualization_1_1_mouse_event.html">pcl::visualization::MouseEvent</a> &amp;, void *), void *cookie=NULL)</td></tr>
<tr class="memdesc:aea7736ed1e3710dc9fcd210c8a41e509"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a callback boost::function for mouse events  <a href="classpcl_1_1visualization_1_1_image_viewer.html#aea7736ed1e3710dc9fcd210c8a41e509">更多...</a><br /></td></tr>
<tr class="separator:aea7736ed1e3710dc9fcd210c8a41e509"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae27531d1bf7fe6c2a79320980b301a4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aae27531d1bf7fe6c2a79320980b301a4"><td class="memTemplItemLeft" align="right" valign="top">boost::signals2::connection&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aae27531d1bf7fe6c2a79320980b301a4">registerMouseCallback</a> (void(T::*callback)(const <a class="el" href="classpcl_1_1visualization_1_1_mouse_event.html">pcl::visualization::MouseEvent</a> &amp;, void *), T &amp;instance, void *cookie=NULL)</td></tr>
<tr class="memdesc:aae27531d1bf7fe6c2a79320980b301a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a callback function for mouse events  <a href="classpcl_1_1visualization_1_1_image_viewer.html#aae27531d1bf7fe6c2a79320980b301a4">更多...</a><br /></td></tr>
<tr class="separator:aae27531d1bf7fe6c2a79320980b301a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22fb868c8d32c6498c51184cdf3a2e26"><td class="memItemLeft" align="right" valign="top">boost::signals2::connection&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a22fb868c8d32c6498c51184cdf3a2e26">registerMouseCallback</a> (boost::function&lt; void(const <a class="el" href="classpcl_1_1visualization_1_1_mouse_event.html">pcl::visualization::MouseEvent</a> &amp;)&gt; cb)</td></tr>
<tr class="memdesc:a22fb868c8d32c6498c51184cdf3a2e26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a callback function for mouse events  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a22fb868c8d32c6498c51184cdf3a2e26">更多...</a><br /></td></tr>
<tr class="separator:a22fb868c8d32c6498c51184cdf3a2e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace5662622459d62b330b83d5a544f26a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ace5662622459d62b330b83d5a544f26a">setPosition</a> (int x, int y)</td></tr>
<tr class="memdesc:ace5662622459d62b330b83d5a544f26a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the position in screen coordinates.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ace5662622459d62b330b83d5a544f26a">更多...</a><br /></td></tr>
<tr class="separator:ace5662622459d62b330b83d5a544f26a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab928954619a61d4d1b6679a421ca8578"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab928954619a61d4d1b6679a421ca8578">setSize</a> (int xw, int yw)</td></tr>
<tr class="memdesc:ab928954619a61d4d1b6679a421ca8578"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the window size in screen coordinates.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ab928954619a61d4d1b6679a421ca8578">更多...</a><br /></td></tr>
<tr class="separator:ab928954619a61d4d1b6679a421ca8578"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae041919b2a5c72dd8db64c98456aee0f"><td class="memItemLeft" align="right" valign="top"><a id="ae041919b2a5c72dd8db64c98456aee0f"></a>
int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()</td></tr>
<tr class="memdesc:ae041919b2a5c72dd8db64c98456aee0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the window size in pixels. <br /></td></tr>
<tr class="separator:ae041919b2a5c72dd8db64c98456aee0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af79aeb1777da223b2ff1a85ee77c71c1"><td class="memItemLeft" align="right" valign="top"><a id="af79aeb1777da223b2ff1a85ee77c71c1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#af79aeb1777da223b2ff1a85ee77c71c1">wasStopped</a> () const</td></tr>
<tr class="memdesc:af79aeb1777da223b2ff1a85ee77c71c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true when the user tried to close the window <br /></td></tr>
<tr class="separator:af79aeb1777da223b2ff1a85ee77c71c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6b01db4cee7006e08b237eac27cb623"><td class="memItemLeft" align="right" valign="top"><a id="ab6b01db4cee7006e08b237eac27cb623"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab6b01db4cee7006e08b237eac27cb623">close</a> ()</td></tr>
<tr class="memdesc:ab6b01db4cee7006e08b237eac27cb623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the interaction and close the visualizaton window. <br /></td></tr>
<tr class="separator:ab6b01db4cee7006e08b237eac27cb623"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4168cf423e972fb3b81553ba67b36ea"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#af4168cf423e972fb3b81553ba67b36ea">addCircle</a> (unsigned int x, unsigned int y, double radius, const std::string &amp;layer_id=&quot;circles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:af4168cf423e972fb3b81553ba67b36ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a circle shape from a point and a radius  <a href="classpcl_1_1visualization_1_1_image_viewer.html#af4168cf423e972fb3b81553ba67b36ea">更多...</a><br /></td></tr>
<tr class="separator:af4168cf423e972fb3b81553ba67b36ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9035ec397ec9c4e0019dc2fca7e8077"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#af9035ec397ec9c4e0019dc2fca7e8077">addCircle</a> (unsigned int x, unsigned int y, double radius, double r, double g, double b, const std::string &amp;layer_id=&quot;circles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:af9035ec397ec9c4e0019dc2fca7e8077"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a circle shape from a point and a radius  <a href="classpcl_1_1visualization_1_1_image_viewer.html#af9035ec397ec9c4e0019dc2fca7e8077">更多...</a><br /></td></tr>
<tr class="separator:af9035ec397ec9c4e0019dc2fca7e8077"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0eae37d9f7fdd3e71dc95bea071198f3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a0eae37d9f7fdd3e71dc95bea071198f3">addRectangle</a> (const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;min_pt, const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;max_pt, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a0eae37d9f7fdd3e71dc95bea071198f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and color its edges with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a0eae37d9f7fdd3e71dc95bea071198f3">更多...</a><br /></td></tr>
<tr class="separator:a0eae37d9f7fdd3e71dc95bea071198f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52f7cd922decf854456c03a5de488050"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a52f7cd922decf854456c03a5de488050">addRectangle</a> (const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;min_pt, const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;max_pt, double r, double g, double b, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a52f7cd922decf854456c03a5de488050"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and color its edges with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a52f7cd922decf854456c03a5de488050">更多...</a><br /></td></tr>
<tr class="separator:a52f7cd922decf854456c03a5de488050"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0560bb62ee28db8d7312461a1b3bc025"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a0560bb62ee28db8d7312461a1b3bc025">addRectangle</a> (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a0560bb62ee28db8d7312461a1b3bc025"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and color its edges with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a0560bb62ee28db8d7312461a1b3bc025">更多...</a><br /></td></tr>
<tr class="separator:a0560bb62ee28db8d7312461a1b3bc025"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a547fd16a365e5d47db69c82b2c932fbb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a547fd16a365e5d47db69c82b2c932fbb">addRectangle</a> (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, double r, double g, double b, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a547fd16a365e5d47db69c82b2c932fbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and color its edges with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a547fd16a365e5d47db69c82b2c932fbb">更多...</a><br /></td></tr>
<tr class="separator:a547fd16a365e5d47db69c82b2c932fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bf9386f204a0d0fb67aeb0ea3257f5d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4bf9386f204a0d0fb67aeb0ea3257f5d"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a4bf9386f204a0d0fb67aeb0ea3257f5d">addRectangle</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const T &amp;min_pt, const T &amp;max_pt, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a4bf9386f204a0d0fb67aeb0ea3257f5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and color its edges with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a4bf9386f204a0d0fb67aeb0ea3257f5d">更多...</a><br /></td></tr>
<tr class="separator:a4bf9386f204a0d0fb67aeb0ea3257f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad03c741567c6053e5aa456d2098b8325"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad03c741567c6053e5aa456d2098b8325"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ad03c741567c6053e5aa456d2098b8325">addRectangle</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const T &amp;min_pt, const T &amp;max_pt, double r, double g, double b, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ad03c741567c6053e5aa456d2098b8325"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and color its edges with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ad03c741567c6053e5aa456d2098b8325">更多...</a><br /></td></tr>
<tr class="separator:ad03c741567c6053e5aa456d2098b8325"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6a59e02982ffa5a0dae843b83f0555e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa6a59e02982ffa5a0dae843b83f0555e"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aa6a59e02982ffa5a0dae843b83f0555e">addRectangle</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;mask, double r, double g, double b, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:aa6a59e02982ffa5a0dae843b83f0555e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box that contains a given image mask and color its edges  <a href="classpcl_1_1visualization_1_1_image_viewer.html#aa6a59e02982ffa5a0dae843b83f0555e">更多...</a><br /></td></tr>
<tr class="separator:aa6a59e02982ffa5a0dae843b83f0555e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e3d4676de11f0f9848e70791e889938"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7e3d4676de11f0f9848e70791e889938"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a7e3d4676de11f0f9848e70791e889938">addRectangle</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;mask, const std::string &amp;layer_id=&quot;image_mask&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a7e3d4676de11f0f9848e70791e889938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box that contains a given image mask and color its edges in red  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a7e3d4676de11f0f9848e70791e889938">更多...</a><br /></td></tr>
<tr class="separator:a7e3d4676de11f0f9848e70791e889938"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e9a0421d08b507f11781444a2ee0957"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a3e9a0421d08b507f11781444a2ee0957">addFilledRectangle</a> (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, const std::string &amp;layer_id=&quot;boxes&quot;, double opacity=0.5)</td></tr>
<tr class="memdesc:a3e9a0421d08b507f11781444a2ee0957"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and fill it in with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a3e9a0421d08b507f11781444a2ee0957">更多...</a><br /></td></tr>
<tr class="separator:a3e9a0421d08b507f11781444a2ee0957"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae20fe7a724a6d4b83f3da2f5cb4b787d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ae20fe7a724a6d4b83f3da2f5cb4b787d">addFilledRectangle</a> (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, double r, double g, double b, const std::string &amp;layer_id=&quot;boxes&quot;, double opacity=0.5)</td></tr>
<tr class="memdesc:ae20fe7a724a6d4b83f3da2f5cb4b787d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D box and fill it in with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ae20fe7a724a6d4b83f3da2f5cb4b787d">更多...</a><br /></td></tr>
<tr class="separator:ae20fe7a724a6d4b83f3da2f5cb4b787d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a846229a2756b8672784c19e23753c322"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a846229a2756b8672784c19e23753c322">addLine</a> (unsigned int x_min, unsigned int y_min, unsigned int x_max, unsigned int y_max, double r, double g, double b, const std::string &amp;layer_id=&quot;line&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a846229a2756b8672784c19e23753c322"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D line with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a846229a2756b8672784c19e23753c322">更多...</a><br /></td></tr>
<tr class="separator:a846229a2756b8672784c19e23753c322"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13a772196607d87cfcadd7abe4738165"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a13a772196607d87cfcadd7abe4738165">addLine</a> (unsigned int x_min, unsigned int y_min, unsigned int x_max, unsigned int y_max, const std::string &amp;layer_id=&quot;line&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a13a772196607d87cfcadd7abe4738165"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D line with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a13a772196607d87cfcadd7abe4738165">更多...</a><br /></td></tr>
<tr class="separator:a13a772196607d87cfcadd7abe4738165"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71b706f96118b8a1fb40a2a9e474165a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a71b706f96118b8a1fb40a2a9e474165a">addText</a> (unsigned int x, unsigned int y, const std::string &amp;text, double r, double g, double b, const std::string &amp;layer_id=&quot;line&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a71b706f96118b8a1fb40a2a9e474165a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D text with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a71b706f96118b8a1fb40a2a9e474165a">更多...</a><br /></td></tr>
<tr class="separator:a71b706f96118b8a1fb40a2a9e474165a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc30830923155965adaf9a96954c73d2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#abc30830923155965adaf9a96954c73d2">addText</a> (unsigned int x, unsigned int y, const std::string &amp;text, const std::string &amp;layer_id=&quot;line&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:abc30830923155965adaf9a96954c73d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a 2D text with a given color  <a href="classpcl_1_1visualization_1_1_image_viewer.html#abc30830923155965adaf9a96954c73d2">更多...</a><br /></td></tr>
<tr class="separator:abc30830923155965adaf9a96954c73d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0081a79231feea5c4802b075cc6a3e4f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a0081a79231feea5c4802b075cc6a3e4f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a0081a79231feea5c4802b075cc6a3e4f">addMask</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;mask, double r, double g, double b, const std::string &amp;layer_id=&quot;image_mask&quot;, double opacity=0.5)</td></tr>
<tr class="memdesc:a0081a79231feea5c4802b075cc6a3e4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a generic 2D mask to an image  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a0081a79231feea5c4802b075cc6a3e4f">更多...</a><br /></td></tr>
<tr class="separator:a0081a79231feea5c4802b075cc6a3e4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2d188a481a99c689d953521387490f2"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ad2d188a481a99c689d953521387490f2"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ad2d188a481a99c689d953521387490f2">addMask</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;mask, const std::string &amp;layer_id=&quot;image_mask&quot;, double opacity=0.5)</td></tr>
<tr class="memdesc:ad2d188a481a99c689d953521387490f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a generic 2D mask to an image (colored in red)  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ad2d188a481a99c689d953521387490f2">更多...</a><br /></td></tr>
<tr class="separator:ad2d188a481a99c689d953521387490f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60432695a77a6641254431714a3412d9"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a60432695a77a6641254431714a3412d9"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a60432695a77a6641254431714a3412d9">addPlanarPolygon</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const <a class="el" href="classpcl_1_1_planar_polygon.html">pcl::PlanarPolygon</a>&lt; T &gt; &amp;polygon, double r, double g, double b, const std::string &amp;layer_id=&quot;planar_polygon&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:a60432695a77a6641254431714a3412d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a generic 2D planar polygon to an image  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a60432695a77a6641254431714a3412d9">更多...</a><br /></td></tr>
<tr class="separator:a60432695a77a6641254431714a3412d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab60d5c2a9f640784af85f9b4641e9de1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab60d5c2a9f640784af85f9b4641e9de1"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab60d5c2a9f640784af85f9b4641e9de1">addPlanarPolygon</a> (const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;image, const <a class="el" href="classpcl_1_1_planar_polygon.html">pcl::PlanarPolygon</a>&lt; T &gt; &amp;polygon, const std::string &amp;layer_id=&quot;planar_polygon&quot;, double opacity=1.0)</td></tr>
<tr class="memdesc:ab60d5c2a9f640784af85f9b4641e9de1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a generic 2D planar polygon to an image  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ab60d5c2a9f640784af85f9b4641e9de1">更多...</a><br /></td></tr>
<tr class="separator:ab60d5c2a9f640784af85f9b4641e9de1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b3898fbeb4d614ce8930d8a3febfaf9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a5b3898fbeb4d614ce8930d8a3febfaf9">addLayer</a> (const std::string &amp;layer_id, int width, int height, double opacity=0.5)</td></tr>
<tr class="memdesc:a5b3898fbeb4d614ce8930d8a3febfaf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new 2D rendering layer to the viewer.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a5b3898fbeb4d614ce8930d8a3febfaf9">更多...</a><br /></td></tr>
<tr class="separator:a5b3898fbeb4d614ce8930d8a3febfaf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d3bc3c84193eaa26cc84820fb22254b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a5d3bc3c84193eaa26cc84820fb22254b">removeLayer</a> (const std::string &amp;layer_id)</td></tr>
<tr class="memdesc:a5d3bc3c84193eaa26cc84820fb22254b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a 2D layer given by its ID.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a5d3bc3c84193eaa26cc84820fb22254b">更多...</a><br /></td></tr>
<tr class="separator:a5d3bc3c84193eaa26cc84820fb22254b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96b3ea6d603b69d1615e778a8b44c26c"><td class="memTemplParams" colspan="2">template&lt;typename PointT &gt; </td></tr>
<tr class="memitem:a96b3ea6d603b69d1615e778a8b44c26c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a96b3ea6d603b69d1615e778a8b44c26c">showCorrespondences</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &amp;source_img, const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &amp;target_img, const pcl::Correspondences &amp;correspondences, int nth=1, const std::string &amp;layer_id=&quot;correspondences&quot;)</td></tr>
<tr class="memdesc:a96b3ea6d603b69d1615e778a8b44c26c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add the specified correspondences to the display.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a96b3ea6d603b69d1615e778a8b44c26c">更多...</a><br /></td></tr>
<tr class="separator:a96b3ea6d603b69d1615e778a8b44c26c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:ae9053b46268ff4cbb3cb9200099302a0"><td class="memItemLeft" align="right" valign="top"><a id="ae9053b46268ff4cbb3cb9200099302a0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ae9053b46268ff4cbb3cb9200099302a0">render</a> ()</td></tr>
<tr class="memdesc:ae9053b46268ff4cbb3cb9200099302a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trigger a render call. <br /></td></tr>
<tr class="separator:ae9053b46268ff4cbb3cb9200099302a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b9c1ff3ca1fe64a54321f3d6da9599c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a3b9c1ff3ca1fe64a54321f3d6da9599c">convertIntensityCloudToUChar</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt; &amp;cloud, boost::shared_array&lt; unsigned char &gt; data)</td></tr>
<tr class="memdesc:a3b9c1ff3ca1fe64a54321f3d6da9599c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the <a class="el" href="structpcl_1_1_intensity.html" title="A point structure representing the grayscale intensity in single-channel images. Intensity is represe...">Intensity</a> information in a PointCloud&lt;Intensity&gt; to an unsigned char array  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a3b9c1ff3ca1fe64a54321f3d6da9599c">更多...</a><br /></td></tr>
<tr class="separator:a3b9c1ff3ca1fe64a54321f3d6da9599c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee92b2fc2a135119c611e4dbb5639281"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aee92b2fc2a135119c611e4dbb5639281">convertIntensityCloud8uToUChar</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt; &amp;cloud, boost::shared_array&lt; unsigned char &gt; data)</td></tr>
<tr class="memdesc:aee92b2fc2a135119c611e4dbb5639281"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the <a class="el" href="structpcl_1_1_intensity8u.html" title="A point structure representing the grayscale intensity in single-channel images. Intensity is represe...">Intensity8u</a> information in a PointCloud&lt;Intensity8u&gt; to an unsigned char array  <a href="classpcl_1_1visualization_1_1_image_viewer.html#aee92b2fc2a135119c611e4dbb5639281">更多...</a><br /></td></tr>
<tr class="separator:aee92b2fc2a135119c611e4dbb5639281"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab92156a468bec6ed9424d1d082767c06"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab92156a468bec6ed9424d1d082767c06"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab92156a468bec6ed9424d1d082767c06">convertRGBCloudToUChar</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;cloud, boost::shared_array&lt; unsigned char &gt; &amp;data)</td></tr>
<tr class="memdesc:ab92156a468bec6ed9424d1d082767c06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> information in a PointCloud&lt;T&gt; to an unsigned char array  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ab92156a468bec6ed9424d1d082767c06">更多...</a><br /></td></tr>
<tr class="separator:ab92156a468bec6ed9424d1d082767c06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a107ca36cb221542e3c53e792bc27c67f"><td class="memItemLeft" align="right" valign="top"><a id="a107ca36cb221542e3c53e792bc27c67f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a107ca36cb221542e3c53e792bc27c67f">resetStoppedFlag</a> ()</td></tr>
<tr class="memdesc:a107ca36cb221542e3c53e792bc27c67f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the stopped flag back to false <br /></td></tr>
<tr class="separator:a107ca36cb221542e3c53e792bc27c67f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9790aea3227a7974531dcc848a1f172b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a9790aea3227a7974531dcc848a1f172b">emitMouseEvent</a> (unsigned long event_id)</td></tr>
<tr class="memdesc:a9790aea3227a7974531dcc848a1f172b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fire up a mouse event with a specified event ID  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a9790aea3227a7974531dcc848a1f172b">更多...</a><br /></td></tr>
<tr class="separator:a9790aea3227a7974531dcc848a1f172b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4473dcb0b7e2d83adb520be23a883f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ab4473dcb0b7e2d83adb520be23a883f5">emitKeyboardEvent</a> (unsigned long event_id)</td></tr>
<tr class="memdesc:ab4473dcb0b7e2d83adb520be23a883f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fire up a keyboard event with a specified event ID  <a href="classpcl_1_1visualization_1_1_image_viewer.html#ab4473dcb0b7e2d83adb520be23a883f5">更多...</a><br /></td></tr>
<tr class="separator:ab4473dcb0b7e2d83adb520be23a883f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
静态 Protected 成员函数</h2></td></tr>
<tr class="memitem:a4459fc8a2d24479e66d4f8715d825140"><td class="memItemLeft" align="right" valign="top"><a id="a4459fc8a2d24479e66d4f8715d825140"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>MouseCallback</b> (vtkObject *, unsigned long eid, void *clientdata, void *calldata)</td></tr>
<tr class="separator:a4459fc8a2d24479e66d4f8715d825140"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa60ced39639f38a6b79b6d50560ccca"><td class="memItemLeft" align="right" valign="top"><a id="aaa60ced39639f38a6b79b6d50560ccca"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>KeyboardCallback</b> (vtkObject *, unsigned long eid, void *clientdata, void *calldata)</td></tr>
<tr class="separator:aaa60ced39639f38a6b79b6d50560ccca"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private 类型</h2></td></tr>
<tr class="memitem:a81d911c9f1150c0a0b8626f93ec6f6ac"><td class="memItemLeft" align="right" valign="top"><a id="a81d911c9f1150c0a0b8626f93ec6f6ac"></a>
typedef std::vector&lt; <a class="el" href="structpcl_1_1visualization_1_1_image_viewer_1_1_layer.html">Layer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>LayerMap</b></td></tr>
<tr class="separator:a81d911c9f1150c0a0b8626f93ec6f6ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private 成员函数</h2></td></tr>
<tr class="memitem:a49f2956a29a84bbcb79caec30cf59986"><td class="memItemLeft" align="right" valign="top">LayerMap::iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">createLayer</a> (const std::string &amp;layer_id, int width, int height, double opacity=0.5, bool fill_box=true)</td></tr>
<tr class="memdesc:a49f2956a29a84bbcb79caec30cf59986"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new 2D rendering layer to the viewer.  <a href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">更多...</a><br /></td></tr>
<tr class="separator:a49f2956a29a84bbcb79caec30cf59986"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:a818196a92cfe5ad40eb8b40668d9f272"><td class="memItemLeft" align="right" valign="top"><a id="a818196a92cfe5ad40eb8b40668d9f272"></a>
boost::signals2::signal&lt; void(const <a class="el" href="classpcl_1_1visualization_1_1_mouse_event.html">pcl::visualization::MouseEvent</a> &amp;)&gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mouse_signal_</b></td></tr>
<tr class="separator:a818196a92cfe5ad40eb8b40668d9f272"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9a072ea1e11cc2088a000d1f0c2f245"><td class="memItemLeft" align="right" valign="top"><a id="aa9a072ea1e11cc2088a000d1f0c2f245"></a>
boost::signals2::signal&lt; void(const <a class="el" href="classpcl_1_1visualization_1_1_keyboard_event.html">pcl::visualization::KeyboardEvent</a> &amp;)&gt;&#160;</td><td class="memItemRight" valign="bottom"><b>keyboard_signal_</b></td></tr>
<tr class="separator:aa9a072ea1e11cc2088a000d1f0c2f245"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac243d43c47a7555b7a803e353be7991b"><td class="memItemLeft" align="right" valign="top"><a id="ac243d43c47a7555b7a803e353be7991b"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkRenderWindowInteractor &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>interactor_</b></td></tr>
<tr class="separator:ac243d43c47a7555b7a803e353be7991b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adac2ba26a9f9448292b487e55ed0a114"><td class="memItemLeft" align="right" valign="top"><a id="adac2ba26a9f9448292b487e55ed0a114"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkCallbackCommand &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mouse_command_</b></td></tr>
<tr class="separator:adac2ba26a9f9448292b487e55ed0a114"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a103f0a12cb196952302f54d8157fa059"><td class="memItemLeft" align="right" valign="top"><a id="a103f0a12cb196952302f54d8157fa059"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkCallbackCommand &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>keyboard_command_</b></td></tr>
<tr class="separator:a103f0a12cb196952302f54d8157fa059"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae0d2a6924edd2f5603abb33a1f58b31"><td class="memItemLeft" align="right" valign="top"><a id="aae0d2a6924edd2f5603abb33a1f58b31"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; <a class="el" href="structpcl_1_1visualization_1_1_image_viewer_1_1_exit_main_loop_timer_callback.html">ExitMainLoopTimerCallback</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aae0d2a6924edd2f5603abb33a1f58b31">exit_main_loop_timer_callback_</a></td></tr>
<tr class="memdesc:aae0d2a6924edd2f5603abb33a1f58b31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback object enabling us to leave the main loop, when a timer fires. <br /></td></tr>
<tr class="separator:aae0d2a6924edd2f5603abb33a1f58b31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc83c600e1f915be890fd26b666916c8"><td class="memItemLeft" align="right" valign="top"><a id="adc83c600e1f915be890fd26b666916c8"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; <a class="el" href="structpcl_1_1visualization_1_1_image_viewer_1_1_exit_callback.html">ExitCallback</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>exit_callback_</b></td></tr>
<tr class="separator:adc83c600e1f915be890fd26b666916c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0537b49cd3ef88f2ab29353c60be8eaa"><td class="memItemLeft" align="right" valign="top"><a id="a0537b49cd3ef88f2ab29353c60be8eaa"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkImageViewer &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a0537b49cd3ef88f2ab29353c60be8eaa">image_viewer_</a></td></tr>
<tr class="memdesc:a0537b49cd3ef88f2ab29353c60be8eaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html" title="ImageViewer is a class for 2D image visualization.">ImageViewer</a> widget. <br /></td></tr>
<tr class="separator:a0537b49cd3ef88f2ab29353c60be8eaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04be616d67f49a2553f33b09c74e36f0"><td class="memItemLeft" align="right" valign="top"><a id="a04be616d67f49a2553f33b09c74e36f0"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkRenderWindow &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a04be616d67f49a2553f33b09c74e36f0">win_</a></td></tr>
<tr class="memdesc:a04be616d67f49a2553f33b09c74e36f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The render window. <br /></td></tr>
<tr class="separator:a04be616d67f49a2553f33b09c74e36f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8b23b888988eb33de555b0997dab464"><td class="memItemLeft" align="right" valign="top"><a id="aa8b23b888988eb33de555b0997dab464"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkRenderer &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#aa8b23b888988eb33de555b0997dab464">ren_</a></td></tr>
<tr class="memdesc:aa8b23b888988eb33de555b0997dab464"><td class="mdescLeft">&#160;</td><td class="mdescRight">The renderer. <br /></td></tr>
<tr class="separator:aa8b23b888988eb33de555b0997dab464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6271c3f1a05a938abaea6511de8ac07a"><td class="memItemLeft" align="right" valign="top"><a id="a6271c3f1a05a938abaea6511de8ac07a"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkImageSlice &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a6271c3f1a05a938abaea6511de8ac07a">slice_</a></td></tr>
<tr class="memdesc:a6271c3f1a05a938abaea6511de8ac07a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Global prop. This is the actual "actor". <br /></td></tr>
<tr class="separator:a6271c3f1a05a938abaea6511de8ac07a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad32038d746d8cd0cdd373d683c03c0f8"><td class="memItemLeft" align="right" valign="top"><a id="ad32038d746d8cd0cdd373d683c03c0f8"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; <a class="el" href="classpcl_1_1visualization_1_1_image_viewer_interactor_style.html">ImageViewerInteractorStyle</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#ad32038d746d8cd0cdd373d683c03c0f8">interactor_style_</a></td></tr>
<tr class="memdesc:ad32038d746d8cd0cdd373d683c03c0f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The interactor style. <br /></td></tr>
<tr class="separator:ad32038d746d8cd0cdd373d683c03c0f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69f2c97585c64cfd2554318c626a51a8"><td class="memItemLeft" align="right" valign="top"><a id="a69f2c97585c64cfd2554318c626a51a8"></a>
boost::shared_array&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a></td></tr>
<tr class="memdesc:a69f2c97585c64cfd2554318c626a51a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The data array representing the image. Used internally. <br /></td></tr>
<tr class="separator:a69f2c97585c64cfd2554318c626a51a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63e797d6b62543b88656892a52acaa13"><td class="memItemLeft" align="right" valign="top"><a id="a63e797d6b62543b88656892a52acaa13"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a></td></tr>
<tr class="memdesc:a63e797d6b62543b88656892a52acaa13"><td class="mdescLeft">&#160;</td><td class="mdescRight">The data array (representing the image) size. Used internally. <br /></td></tr>
<tr class="separator:a63e797d6b62543b88656892a52acaa13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86c3e41e3f05a9bd4072a8af01047593"><td class="memItemLeft" align="right" valign="top"><a id="a86c3e41e3f05a9bd4072a8af01047593"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a86c3e41e3f05a9bd4072a8af01047593">stopped_</a></td></tr>
<tr class="memdesc:a86c3e41e3f05a9bd4072a8af01047593"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to false if the interaction loop is running. <br /></td></tr>
<tr class="separator:a86c3e41e3f05a9bd4072a8af01047593"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a738e7fe93eb04dbb8fcf1ed34ce0ab88"><td class="memItemLeft" align="right" valign="top"><a id="a738e7fe93eb04dbb8fcf1ed34ce0ab88"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a738e7fe93eb04dbb8fcf1ed34ce0ab88">timer_id_</a></td></tr>
<tr class="memdesc:a738e7fe93eb04dbb8fcf1ed34ce0ab88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Global timer ID. Used in destructor only. <br /></td></tr>
<tr class="separator:a738e7fe93eb04dbb8fcf1ed34ce0ab88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7874619bb6929047578a1e66596649da"><td class="memItemLeft" align="right" valign="top"><a id="a7874619bb6929047578a1e66596649da"></a>
LayerMap&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a></td></tr>
<tr class="memdesc:a7874619bb6929047578a1e66596649da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal list with different 2D layers shapes. <br /></td></tr>
<tr class="separator:a7874619bb6929047578a1e66596649da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8028c171e53a93c4d819d63cadbe4a9"><td class="memItemLeft" align="right" valign="top"><a id="af8028c171e53a93c4d819d63cadbe4a9"></a>
<a class="el" href="classvtk_smart_pointer.html">vtkSmartPointer</a>&lt; vtkImageFlip &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#af8028c171e53a93c4d819d63cadbe4a9">algo_</a></td></tr>
<tr class="memdesc:af8028c171e53a93c4d819d63cadbe4a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Image reslice, used for flipping the image. <br /></td></tr>
<tr class="separator:af8028c171e53a93c4d819d63cadbe4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c6fd562663c2d5a67fa80226d69fcd0"><td class="memItemLeft" align="right" valign="top"><a id="a5c6fd562663c2d5a67fa80226d69fcd0"></a>
std::vector&lt; unsigned char * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html#a5c6fd562663c2d5a67fa80226d69fcd0">image_data_</a></td></tr>
<tr class="memdesc:a5c6fd562663c2d5a67fa80226d69fcd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal data array. Used everytime add***Image is called. Cleared, everytime the render loop is executed. <br /></td></tr>
<tr class="separator:a5c6fd562663c2d5a67fa80226d69fcd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html" title="ImageViewer is a class for 2D image visualization.">ImageViewer</a> is a class for 2D image visualization. </p>
<p>Features include:</p><ul>
<li>add and remove different layers with different opacity (transparency) values</li>
<li>add 2D geometric shapes (circles, boxes, etc) in separate layers</li>
<li>display <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a>, monochrome, float, angle images</li>
</ul>
<p>Simple usage example: </p><div class="fragment"><div class="line"><a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html">pcl::visualization::ImageViewer</a> iv;</div>
<div class="line">iv.<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#af4168cf423e972fb3b81553ba67b36ea">addCircle</a> (10, 10, 5, 1.0, 0.0, 0.0, <span class="stringliteral">&quot;circles&quot;</span>, 1.0);    <span class="comment">// add a red, fully opaque circle with radius 5 pixels at (10,10) in layer &quot;circles&quot;</span></div>
<div class="line">iv.<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a3e9a0421d08b507f11781444a2ee0957">addFilledRectangle</a> (10, 20, 10, 20, 0.0, 1.0, 0.0, <span class="stringliteral">&quot;boxes&quot;</span>, 0.5);    <span class="comment">// add a green, 50% transparent box at (10,10-&gt;20,20) in layer &quot;boxes&quot;</span></div>
<div class="line">iv.<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ab3340b7e8cc80f3cf4276dfcbb589fe5">addRGBImage</a>&lt;<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a>&gt; (cloud);                  <span class="comment">// add a RGB image from a point cloud dataset in an &quot;rgb_image&quot; default layer</span></div>
<div class="line">iv.<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a78653afaa6dc910ce241b9bf8cea45f6">spin</a> ();                                                 <span class="comment">// press &#39;q&#39; to exit</span></div>
<div class="line">iv.<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a5d3bc3c84193eaa26cc84820fb22254b">removeLayer</a> (<span class="stringliteral">&quot;circles&quot;</span>);                                 <span class="comment">// remove layer &quot;circles&quot;</span></div>
<div class="line">iv.<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a78653afaa6dc910ce241b9bf8cea45f6">spin</a> ();                                                 <span class="comment">// press &#39;q&#39; to exit</span></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html">pcl::visualization::ImageViewer</a></div><div class="ttdoc">ImageViewer is a class for 2D image visualization.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:119</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a3e9a0421d08b507f11781444a2ee0957"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a3e9a0421d08b507f11781444a2ee0957">pcl::visualization::ImageViewer::addFilledRectangle</a></div><div class="ttdeci">bool addFilledRectangle(unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, const std::string &amp;layer_id=&quot;boxes&quot;, double opacity=0.5)</div><div class="ttdoc">Add a 2D box and fill it in with a given color</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a5d3bc3c84193eaa26cc84820fb22254b"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a5d3bc3c84193eaa26cc84820fb22254b">pcl::visualization::ImageViewer::removeLayer</a></div><div class="ttdeci">void removeLayer(const std::string &amp;layer_id)</div><div class="ttdoc">Remove a 2D layer given by its ID.</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a78653afaa6dc910ce241b9bf8cea45f6"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a78653afaa6dc910ce241b9bf8cea45f6">pcl::visualization::ImageViewer::spin</a></div><div class="ttdeci">void spin()</div><div class="ttdoc">Spin method. Calls the interactor and runs an internal loop.</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_ab3340b7e8cc80f3cf4276dfcbb589fe5"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#ab3340b7e8cc80f3cf4276dfcbb589fe5">pcl::visualization::ImageViewer::addRGBImage</a></div><div class="ttdeci">void addRGBImage(const unsigned char *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;rgb_image&quot;, double opacity=1.0)</div><div class="ttdoc">Add an RGB 2D image layer, but do not render it (use spin/spinOnce to update).</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_af4168cf423e972fb3b81553ba67b36ea"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#af4168cf423e972fb3b81553ba67b36ea">pcl::visualization::ImageViewer::addCircle</a></div><div class="ttdeci">bool addCircle(unsigned int x, unsigned int y, double radius, const std::string &amp;layer_id=&quot;circles&quot;, double opacity=1.0)</div><div class="ttdoc">Add a circle shape from a point and a radius</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment --><dl class="section author"><dt>作者</dt><dd>Radu B. Rusu, Suat Gedikli </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="ab67fc7734463f333ef483e0ec1eaeab0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab67fc7734463f333ef483e0ec1eaeab0">&#9670;&nbsp;</a></span>ImageViewer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">pcl::visualization::ImageViewer::ImageViewer </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>window_title</em> = <code>&quot;&quot;</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">window_title</td><td>the title of the window </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="ad46e6a0d2d9b1e1a1d4a0e56b3e28bd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad46e6a0d2d9b1e1a1d4a0e56b3e28bd3">&#9670;&nbsp;</a></span>addAngleImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addAngleImage </td>
          <td>(</td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;angle_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add an angle 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="af4168cf423e972fb3b81553ba67b36ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4168cf423e972fb3b81553ba67b36ea">&#9670;&nbsp;</a></span>addCircle() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addCircle </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;circles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a circle shape from a point and a radius </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>the x coordinate of the circle center </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>the y coordinate of the circle center </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the circle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="af9035ec397ec9c4e0019dc2fca7e8077"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9035ec397ec9c4e0019dc2fca7e8077">&#9670;&nbsp;</a></span>addCircle() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addCircle </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;circles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a circle shape from a point and a radius </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>the x coordinate of the circle center </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>the y coordinate of the circle center </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the circle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the sphere should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the sphere should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the sphere should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a3e9a0421d08b507f11781444a2ee0957"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e9a0421d08b507f11781444a2ee0957">&#9670;&nbsp;</a></span>addFilledRectangle() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addFilledRectangle </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;boxes&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>0.5</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and fill it in with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x_min</td><td>the X min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x_max</td><td>the X max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_min</td><td>the Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_max</td><td>the Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 0.5) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ae20fe7a724a6d4b83f3da2f5cb4b787d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae20fe7a724a6d4b83f3da2f5cb4b787d">&#9670;&nbsp;</a></span>addFilledRectangle() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addFilledRectangle </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;boxes&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>0.5</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and fill it in with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x_min</td><td>the X min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x_max</td><td>the X max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_min</td><td>the Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_max</td><td>the Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 0.5) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ac29c3b5fa725cb452135733e13332d6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac29c3b5fa725cb452135733e13332d6c">&#9670;&nbsp;</a></span>addFloatImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addFloatImage </td>
          <td>(</td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>min_value</em> = <code>std::numeric_limits&lt;&#160;float&#160;&gt;::min()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>max_value</em> = <code>std::numeric_limits&lt;&#160;float&#160;&gt;::max()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>grayscale</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;float_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a float 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image in float format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_value</td><td>filter all values in the image to be larger than this minimum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_value</td><td>filter all values in the image to be smaller than this maximum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">grayscale</td><td>show data as grayscale (true) or not (false). Default: false </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a60fa47b0538b35974d7f63e741c5ef83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60fa47b0538b35974d7f63e741c5ef83">&#9670;&nbsp;</a></span>addHalfAngleImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addHalfAngleImage </td>
          <td>(</td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;half_angle_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a half angle 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a5b3898fbeb4d614ce8930d8a3febfaf9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b3898fbeb4d614ce8930d8a3febfaf9">&#9670;&nbsp;</a></span>addLayer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addLayer </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>0.5</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a new 2D rendering layer to the viewer. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the layer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the layer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 0.5) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a13a772196607d87cfcadd7abe4738165"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13a772196607d87cfcadd7abe4738165">&#9670;&nbsp;</a></span>addLine() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addLine </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;line&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D line with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x_min</td><td>the X min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_min</td><td>the Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x_max</td><td>the X max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_max</td><td>the Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a846229a2756b8672784c19e23753c322"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a846229a2756b8672784c19e23753c322">&#9670;&nbsp;</a></span>addLine() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addLine </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;line&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D line with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x_min</td><td>the X min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_min</td><td>the Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x_max</td><td>the X max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_max</td><td>the Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the line should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the line should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the line should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ad2d188a481a99c689d953521387490f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2d188a481a99c689d953521387490f2">&#9670;&nbsp;</a></span>addMask() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addMask </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;image_mask&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>0.5</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a generic 2D mask to an image (colored in red) </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mask</td><td>the point data representing the mask that we want to draw </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 0.5) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;{</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a0081a79231feea5c4802b075cc6a3e4f">addMask</a> (image, mask, 1.0, 0.0, 0.0, layer_id, opacity));</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a0081a79231feea5c4802b075cc6a3e4f"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a0081a79231feea5c4802b075cc6a3e4f">pcl::visualization::ImageViewer::addMask</a></div><div class="ttdeci">bool addMask(const typename pcl::PointCloud&lt; T &gt;::ConstPtr &amp;image, const pcl::PointCloud&lt; T &gt; &amp;mask, double r, double g, double b, const std::string &amp;layer_id=&quot;image_mask&quot;, double opacity=0.5)</div><div class="ttdoc">Add a generic 2D mask to an image</div><div class="ttdef"><b>Definition:</b> image_viewer.hpp:97</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0081a79231feea5c4802b075cc6a3e4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0081a79231feea5c4802b075cc6a3e4f">&#9670;&nbsp;</a></span>addMask() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addMask </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;image_mask&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>0.5</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a generic 2D mask to an image </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mask</td><td>the point data representing the mask that we want to draw </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the mask should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the mask should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the mask should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 0.5) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;{</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="comment">// We assume that the data passed into image is organized, otherwise this doesn&#39;t make sense</span></div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="keywordflow">if</span> (!image-&gt;isOrganized ())</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="comment">// Check to see if this ID entry already exists (has it been already added to the visualizer?)</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  LayerMap::iterator am_it = std::find_if (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.begin (), <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end (), LayerComparator (layer_id));</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="keywordflow">if</span> (am_it == <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end ())</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  {</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::visualization::ImageViewer::addMask] No layer with ID&#39;=%s&#39; found. Creating new one...\n&quot;</span>, layer_id.c_str ());</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    am_it = <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">createLayer</a> (layer_id, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[0] - 1, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[1] - 1, opacity, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  }</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// Construct a search object to get the camera parameters</span></div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor&lt;T&gt;</a> search;</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">setInputCloud</a> (image);</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  std::vector&lt;float&gt; xy;</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  xy.reserve (mask.size () * 2);</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; mask.size (); ++i)</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <a class="code" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> p_projected;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (mask[i], p_projected);</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    xy.push_back (p_projected.x);</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="preprocessor">    #if ((VTK_MAJOR_VERSION &gt;= 6) || ((VTK_MAJOR_VERSION == 5) &amp;&amp; (VTK_MINOR_VERSION &gt; 7)))</span></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    xy.push_back (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (image-&gt;height) - p_projected.y);</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">    #else</span></div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    xy.push_back (p_projected.y);</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor">    #endif</span></div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  }</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Points&gt;</a> points = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Points&gt;::New</a> ();</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  points-&gt;setColors (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (r*255.0), </div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;                     <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (g*255.0), </div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;                     <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (b*255.0));</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  points-&gt;setOpacity (opacity);</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  points-&gt;set (xy);</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (points);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a></div><div class="ttdoc">OrganizedNeighbor is a class for optimized nearest neigbhor search in organized point clouds.</div><div class="ttdef"><b>Definition:</b> organized.h:63</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_a7a5330aaf077e0833d59b51b23144996"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">pcl::search::OrganizedNeighbor::setInputCloud</a></div><div class="ttdeci">virtual void setInputCloud(const PointCloudConstPtr &amp;cloud, const IndicesConstPtr &amp;indices=IndicesConstPtr())</div><div class="ttdoc">Provide a pointer to the input data set, if user has focal length he must set it before calling this</div><div class="ttdef"><b>Definition:</b> organized.h:129</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html_aca8b03a28a893389fe2a2153c3f657a2"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">pcl::search::OrganizedNeighbor::projectPoint</a></div><div class="ttdeci">bool projectPoint(const PointT &amp;p, pcl::PointXY &amp;q) const</div><div class="ttdoc">projects a point into the image</div><div class="ttdef"><b>Definition:</b> organized.hpp:382</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a49f2956a29a84bbcb79caec30cf59986"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">pcl::visualization::ImageViewer::createLayer</a></div><div class="ttdeci">LayerMap::iterator createLayer(const std::string &amp;layer_id, int width, int height, double opacity=0.5, bool fill_box=true)</div><div class="ttdoc">Add a new 2D rendering layer to the viewer.</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a7874619bb6929047578a1e66596649da"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">pcl::visualization::ImageViewer::layer_map_</a></div><div class="ttdeci">LayerMap layer_map_</div><div class="ttdoc">Internal list with different 2D layers shapes.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:1039</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_ae041919b2a5c72dd8db64c98456aee0f"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">pcl::visualization::ImageViewer::getSize</a></div><div class="ttdeci">int * getSize()</div><div class="ttdoc">Return the window size in pixels.</div></div>
<div class="ttc" id="aclassvtk_smart_pointer_html"><div class="ttname"><a href="classvtk_smart_pointer.html">vtkSmartPointer</a></div><div class="ttdef"><b>Definition:</b> actor_map.h:50</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_html"><div class="ttname"><a href="structpcl_1_1_point_x_y.html">pcl::PointXY</a></div><div class="ttdoc">A 2D point structure representing Euclidean xy coordinates.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:720</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4717d079f67880bfc7a80b3731b6eada"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4717d079f67880bfc7a80b3731b6eada">&#9670;&nbsp;</a></span>addMonoImage() <span class="overload">[1/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ad0ed6bc71fcd05d3c77148d76368915a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0ed6bc71fcd05d3c77148d76368915a">&#9670;&nbsp;</a></span>addMonoImage() <span class="overload">[2/5]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the grayscale point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        {</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a764f707517a6f5a94d6afd9441508794">addMonoImage</a> (*cloud, layer_id, opacity));</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a764f707517a6f5a94d6afd9441508794"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a764f707517a6f5a94d6afd9441508794">pcl::visualization::ImageViewer::addMonoImage</a></div><div class="ttdeci">void addMonoImage(const unsigned char *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</div><div class="ttdoc">Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update).</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a85f3a0290a4b9e4c29b847e8aa06679d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85f3a0290a4b9e4c29b847e8aa06679d">&#9670;&nbsp;</a></span>addMonoImage() <span class="overload">[3/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a3cb5442511b386e1463680ff0f01f288"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cb5442511b386e1463680ff0f01f288">&#9670;&nbsp;</a></span>addMonoImage() <span class="overload">[4/5]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the grayscale point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        {</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a764f707517a6f5a94d6afd9441508794">addMonoImage</a> (*cloud, layer_id, opacity));</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a764f707517a6f5a94d6afd9441508794"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a764f707517a6f5a94d6afd9441508794">&#9670;&nbsp;</a></span>addMonoImage() <span class="overload">[5/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addMonoImage </td>
          <td>(</td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a monochrome 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ab60d5c2a9f640784af85f9b4641e9de1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab60d5c2a9f640784af85f9b4641e9de1">&#9670;&nbsp;</a></span>addPlanarPolygon() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addPlanarPolygon </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_planar_polygon.html">pcl::PlanarPolygon</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygon</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;planar_polygon&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a generic 2D planar polygon to an image </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">polygon</td><td>the point data representing the polygon that we want to draw. A line will be drawn from each point to the next in the dataset. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;{</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a60432695a77a6641254431714a3412d9">addPlanarPolygon</a> (image, polygon, 1.0, 0.0, 0.0, layer_id, opacity));</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a60432695a77a6641254431714a3412d9"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a60432695a77a6641254431714a3412d9">pcl::visualization::ImageViewer::addPlanarPolygon</a></div><div class="ttdeci">bool addPlanarPolygon(const typename pcl::PointCloud&lt; T &gt;::ConstPtr &amp;image, const pcl::PlanarPolygon&lt; T &gt; &amp;polygon, double r, double g, double b, const std::string &amp;layer_id=&quot;planar_polygon&quot;, double opacity=1.0)</div><div class="ttdoc">Add a generic 2D planar polygon to an image</div><div class="ttdef"><b>Definition:</b> image_viewer.hpp:155</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a60432695a77a6641254431714a3412d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60432695a77a6641254431714a3412d9">&#9670;&nbsp;</a></span>addPlanarPolygon() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addPlanarPolygon </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_planar_polygon.html">pcl::PlanarPolygon</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygon</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;planar_polygon&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a generic 2D planar polygon to an image </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">polygon</td><td>the point data representing the polygon that we want to draw. A line will be drawn from each point to the next in the dataset. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the polygon should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the polygon should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the polygon should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;{</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// We assume that the data passed into image is organized, otherwise this doesn&#39;t make sense</span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="keywordflow">if</span> (!image-&gt;isOrganized ())</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="comment">// Check to see if this ID entry already exists (has it been already added to the visualizer?)</span></div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  LayerMap::iterator am_it = std::find_if (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.begin (), <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end (), LayerComparator (layer_id));</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">if</span> (am_it == <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end ())</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  {</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::visualization::ImageViewer::addPlanarPolygon] No layer with ID&#39;=%s&#39; found. Creating new one...\n&quot;</span>, layer_id.c_str ());</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    am_it = <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">createLayer</a> (layer_id, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[0] - 1, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[1] - 1, opacity, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  }</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  </div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="comment">// Construct a search object to get the camera parameters and fill points</span></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor&lt;T&gt;</a> search;</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">setInputCloud</a> (image);</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  std::vector&lt;float&gt; xy;</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  xy.reserve ((polygon.<a class="code" href="classpcl_1_1_planar_polygon.html#ac657798ccb001cc71aafdf2f683f2c4b">getContour</a> ().size () + 1) * 2);</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; polygon.<a class="code" href="classpcl_1_1_planar_polygon.html#ac657798ccb001cc71aafdf2f683f2c4b">getContour</a> ().size (); ++i)</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  {</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <a class="code" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> p;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (polygon.<a class="code" href="classpcl_1_1_planar_polygon.html#ac657798ccb001cc71aafdf2f683f2c4b">getContour</a> ()[i], p);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    xy.push_back (p.x);</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="preprocessor">    #if ((VTK_MAJOR_VERSION == 5) &amp;&amp; (VTK_MINOR_VERSION &lt;= 7))</span></div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    xy.push_back (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (image-&gt;height) - p.y);</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="preprocessor">    #else</span></div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    xy.push_back (p.y);</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="preprocessor">    #endif</span></div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  }</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160; </div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  <span class="comment">// Close the polygon</span></div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  xy[xy.size () - 2] = xy[0];</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  xy[xy.size () - 1] = xy[1];</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Polygon&gt;</a> poly = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Polygon&gt;::New</a> ();</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  poly-&gt;setColors (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (r * 255.0), </div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (g * 255.0), </div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (b * 255.0));</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  poly-&gt;setOpacity (opacity);</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  poly-&gt;set (xy);</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (poly);</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_planar_polygon_html_ac657798ccb001cc71aafdf2f683f2c4b"><div class="ttname"><a href="classpcl_1_1_planar_polygon.html#ac657798ccb001cc71aafdf2f683f2c4b">pcl::PlanarPolygon::getContour</a></div><div class="ttdeci">pcl::PointCloud&lt; PointT &gt;::VectorType &amp; getContour()</div><div class="ttdoc">Getter for the contour / boundary</div><div class="ttdef"><b>Definition:</b> planar_polygon.h:87</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0eae37d9f7fdd3e71dc95bea071198f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0eae37d9f7fdd3e71dc95bea071198f3">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[1/8]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;&#160;</td>
          <td class="paramname"><em>min_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;&#160;</td>
          <td class="paramname"><em>max_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rectangles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and color its edges with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_pt</td><td>the X,Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_pt</td><td>the X,Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a52f7cd922decf854456c03a5de488050"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52f7cd922decf854456c03a5de488050">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[2/8]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;&#160;</td>
          <td class="paramname"><em>min_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> &amp;&#160;</td>
          <td class="paramname"><em>max_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rectangles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and color its edges with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_pt</td><td>the X,Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_pt</td><td>the X,Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a7e3d4676de11f0f9848e70791e889938"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e3d4676de11f0f9848e70791e889938">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[3/8]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;image_mask&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box that contains a given image mask and color its edges in red </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mask</td><td>the point data representing the mask that we want to draw </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;{</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a0eae37d9f7fdd3e71dc95bea071198f3">addRectangle</a> (image, mask, 0.0, 1.0, 0.0, layer_id, opacity));</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a0eae37d9f7fdd3e71dc95bea071198f3"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a0eae37d9f7fdd3e71dc95bea071198f3">pcl::visualization::ImageViewer::addRectangle</a></div><div class="ttdeci">bool addRectangle(const pcl::PointXY &amp;min_pt, const pcl::PointXY &amp;max_pt, const std::string &amp;layer_id=&quot;rectangles&quot;, double opacity=1.0)</div><div class="ttdoc">Add a 2D box and color its edges with a given color</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa6a59e02982ffa5a0dae843b83f0555e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6a59e02982ffa5a0dae843b83f0555e">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[4/8]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rectangles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box that contains a given image mask and color its edges </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mask</td><td>the point data representing the mask that we want to draw </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the mask should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the mask should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the mask should be rendered with </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;{</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  <span class="comment">// We assume that the data passed into image is organized, otherwise this doesn&#39;t make sense</span></div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">if</span> (!image-&gt;isOrganized ())</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160; </div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  <span class="comment">// Check to see if this ID entry already exists (has it been already added to the visualizer?)</span></div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  LayerMap::iterator am_it = std::find_if (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.begin (), <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end (), LayerComparator (layer_id));</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="keywordflow">if</span> (am_it == <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end ())</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  {</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::visualization::ImageViewer::addRectangle] No layer with ID&#39;=%s&#39; found. Creating new one...\n&quot;</span>, layer_id.c_str ());</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    am_it = <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">createLayer</a> (layer_id, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[0] - 1, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[1] - 1, opacity, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  }</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160; </div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  <span class="comment">// Construct a search object to get the camera parameters</span></div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor&lt;T&gt;</a> search;</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">setInputCloud</a> (image);</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;  std::vector&lt;pcl::PointXY&gt; pp_2d (mask.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>.size ());</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; mask.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>.size (); ++i)</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (mask.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[i], pp_2d[i]);</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160; </div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <a class="code" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> min_pt_2d, max_pt_2d;</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  min_pt_2d.x = min_pt_2d.y = std::numeric_limits&lt;float&gt;::max ();</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;  max_pt_2d.x = max_pt_2d.y = -std::numeric_limits&lt;float&gt;::max ();</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;  <span class="comment">// Search for the two extrema</span></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; pp_2d.size (); ++i)</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  {</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].x &lt; min_pt_2d.x) min_pt_2d.x = pp_2d[i].x;</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].y &lt; min_pt_2d.y) min_pt_2d.y = pp_2d[i].y;</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].x &gt; max_pt_2d.x) max_pt_2d.x = pp_2d[i].x;</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].y &gt; max_pt_2d.y) max_pt_2d.y = pp_2d[i].y;</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  }</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;<span class="preprocessor">#if ((VTK_MAJOR_VERSION &gt;= 6) ||((VTK_MAJOR_VERSION == 5) &amp;&amp; (VTK_MINOR_VERSION &gt; 7)))</span></div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  min_pt_2d.y = float (image-&gt;height) - min_pt_2d.y;</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;  max_pt_2d.y = float (image-&gt;height) - max_pt_2d.y;</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;  <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Rectangle&gt;</a> rect = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Rectangle&gt;::New</a> ();</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  rect-&gt;setColors (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * r), </div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * g), </div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * b));</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  rect-&gt;setOpacity (opacity);</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  rect-&gt;set (min_pt_2d.x, min_pt_2d.y, max_pt_2d.x, max_pt_2d.y);</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (rect);</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160; </div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_af16a62638198313b9c093127c492c884"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">pcl::PointCloud::points</a></div><div class="ttdeci">std::vector&lt; PointT, Eigen::aligned_allocator&lt; PointT &gt; &gt; points</div><div class="ttdoc">The point data.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:410</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4bf9386f204a0d0fb67aeb0ea3257f5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bf9386f204a0d0fb67aeb0ea3257f5d">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[5/8]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>min_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>max_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rectangles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and color its edges with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_pt</td><td>the X,Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_pt</td><td>the X,Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;{</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  <span class="keywordflow">return</span> (addRectangle&lt;T&gt; (image, min_pt, max_pt, 0.0, 1.0, 0.0, layer_id, opacity));</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad03c741567c6053e5aa456d2098b8325"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad03c741567c6053e5aa456d2098b8325">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[6/8]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>min_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>max_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rectangles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and color its edges with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>the organized point cloud dataset containing the image data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_pt</td><td>the X,Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_pt</td><td>the X,Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;{</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="comment">// We assume that the data passed into image is organized, otherwise this doesn&#39;t make sense</span></div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <span class="keywordflow">if</span> (!image-&gt;isOrganized ())</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160; </div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  <span class="comment">// Check to see if this ID entry already exists (has it been already added to the visualizer?)</span></div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  LayerMap::iterator am_it = std::find_if (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.begin (), <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end (), LayerComparator (layer_id));</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;  <span class="keywordflow">if</span> (am_it == <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end ())</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;  {</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::visualization::ImageViewer::addRectangle] No layer with ID&#39;=%s&#39; found. Creating new one...\n&quot;</span>, layer_id.c_str ());</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    am_it = <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">createLayer</a> (layer_id, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[0] - 1, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[1] - 1, opacity, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  }</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="comment">// Construct a search object to get the camera parameters</span></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor&lt;T&gt;</a> search;</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#a7a5330aaf077e0833d59b51b23144996">setInputCloud</a> (image);</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="comment">// Project the 8 corners</span></div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  T p1, p2, p3, p4, p5, p6, p7, p8;</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  p1.x = min_pt.x; p1.y = min_pt.y; p1.z = min_pt.z;</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  p2.x = min_pt.x; p2.y = min_pt.y; p2.z = max_pt.z;</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  p3.x = min_pt.x; p3.y = max_pt.y; p3.z = min_pt.z;</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  p4.x = min_pt.x; p4.y = max_pt.y; p4.z = max_pt.z;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  p5.x = max_pt.x; p5.y = min_pt.y; p5.z = min_pt.z;</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  p6.x = max_pt.x; p6.y = min_pt.y; p6.z = max_pt.z;</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  p7.x = max_pt.x; p7.y = max_pt.y; p7.z = min_pt.z;</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  p8.x = max_pt.x; p8.y = max_pt.y; p8.z = max_pt.z;</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160; </div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  std::vector&lt;pcl::PointXY&gt; pp_2d (8);</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p1, pp_2d[0]);</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p2, pp_2d[1]);</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p3, pp_2d[2]);</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p4, pp_2d[3]);</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p5, pp_2d[4]);</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p6, pp_2d[5]);</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p7, pp_2d[6]);</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  search.<a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html#aca8b03a28a893389fe2a2153c3f657a2">projectPoint</a> (p8, pp_2d[7]);</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  <a class="code" href="structpcl_1_1_point_x_y.html">pcl::PointXY</a> min_pt_2d, max_pt_2d;</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  min_pt_2d.x = min_pt_2d.y = std::numeric_limits&lt;float&gt;::max ();</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  max_pt_2d.x = max_pt_2d.y = -std::numeric_limits&lt;float&gt;::max ();</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <span class="comment">// Search for the two extrema</span></div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; pp_2d.size (); ++i)</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  {</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].x &lt; min_pt_2d.x) min_pt_2d.x = pp_2d[i].x;</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].y &lt; min_pt_2d.y) min_pt_2d.y = pp_2d[i].y;</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].x &gt; max_pt_2d.x) max_pt_2d.x = pp_2d[i].x;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <span class="keywordflow">if</span> (pp_2d[i].y &gt; max_pt_2d.y) max_pt_2d.y = pp_2d[i].y;</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  }</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="preprocessor">#if ((VTK_MAJOR_VERSION &gt;= 6) || ((VTK_MAJOR_VERSION == 5) &amp;&amp; (VTK_MINOR_VERSION &gt; 7)))</span></div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  min_pt_2d.y = float (image-&gt;height) - min_pt_2d.y;</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  max_pt_2d.y = float (image-&gt;height) - max_pt_2d.y;</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Rectangle&gt;</a> rect = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Rectangle&gt;::New</a> ();</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  rect-&gt;setColors (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * r), </div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * g), </div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                   <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * b));</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  rect-&gt;setOpacity (opacity);</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  rect-&gt;set (min_pt_2d.x, min_pt_2d.y, max_pt_2d.x, max_pt_2d.y);</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (rect);</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a0560bb62ee28db8d7312461a1b3bc025"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0560bb62ee28db8d7312461a1b3bc025">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[7/8]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rectangles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and color its edges with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x_min</td><td>the X min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x_max</td><td>the X max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_min</td><td>the Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_max</td><td>the Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a547fd16a365e5d47db69c82b2c932fbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a547fd16a365e5d47db69c82b2c932fbb">&#9670;&nbsp;</a></span>addRectangle() <span class="overload">[8/8]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addRectangle </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rectangles&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D box and color its edges with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x_min</td><td>the X min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x_max</td><td>the X max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_min</td><td>the Y min coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y_max</td><td>the Y max coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the box should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="af350a394ba65506f84f2b140c22b5063"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af350a394ba65506f84f2b140c22b5063">&#9670;&nbsp;</a></span>addRGBImage() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addRGBImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rgb_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add an <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;{</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a> &lt; cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>)</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  {</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a> = cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a> * 3;</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>.reset (<span class="keyword">new</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>[<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a>]);</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  }</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ab92156a468bec6ed9424d1d082767c06">convertRGBCloudToUChar</a> (cloud, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>);</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ab3340b7e8cc80f3cf4276dfcbb589fe5">addRGBImage</a> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>.get (), cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>, cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>, layer_id, opacity));</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a2185a6453f8ad905d7bdf7b45754a160"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">pcl::PointCloud::width</a></div><div class="ttdeci">uint32_t width</div><div class="ttdoc">The point cloud width (if organized as an image-structure).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:413</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a4f34b45220c57f96607513ffad0d9582"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">pcl::PointCloud::height</a></div><div class="ttdeci">uint32_t height</div><div class="ttdoc">The point cloud height (if organized as an image-structure).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:415</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a63e797d6b62543b88656892a52acaa13"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">pcl::visualization::ImageViewer::data_size_</a></div><div class="ttdeci">size_t data_size_</div><div class="ttdoc">The data array (representing the image) size. Used internally.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:1027</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a69f2c97585c64cfd2554318c626a51a8"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">pcl::visualization::ImageViewer::data_</a></div><div class="ttdeci">boost::shared_array&lt; unsigned char &gt; data_</div><div class="ttdoc">The data array representing the image. Used internally.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:1024</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_ab92156a468bec6ed9424d1d082767c06"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#ab92156a468bec6ed9424d1d082767c06">pcl::visualization::ImageViewer::convertRGBCloudToUChar</a></div><div class="ttdeci">void convertRGBCloudToUChar(const pcl::PointCloud&lt; T &gt; &amp;cloud, boost::shared_array&lt; unsigned char &gt; &amp;data)</div><div class="ttdoc">Convert the RGB information in a PointCloud&lt;T&gt; to an unsigned char array</div><div class="ttdef"><b>Definition:</b> image_viewer.hpp:55</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac0c9e8a98da3768aef5dd08df9822bdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0c9e8a98da3768aef5dd08df9822bdf">&#9670;&nbsp;</a></span>addRGBImage() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addRGBImage </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rgb_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add an <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        {</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;          <span class="keywordflow">return</span> (addRGBImage&lt;T&gt; (*cloud, layer_id, opacity));</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ab3340b7e8cc80f3cf4276dfcbb589fe5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3340b7e8cc80f3cf4276dfcbb589fe5">&#9670;&nbsp;</a></span>addRGBImage() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addRGBImage </td>
          <td>(</td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rgb_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add an <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a9a53f1ab682bd6031a613683cf79df34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a53f1ab682bd6031a613683cf79df34">&#9670;&nbsp;</a></span>addShortImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::addShortImage </td>
          <td>(</td>
          <td class="paramtype">const unsigned short *&#160;</td>
          <td class="paramname"><em>short_image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short&#160;</td>
          <td class="paramname"><em>min_value</em> = <code>std::numeric_limits&lt;&#160;unsigned&#160;short&#160;&gt;::min()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short&#160;</td>
          <td class="paramname"><em>max_value</em> = <code>std::numeric_limits&lt;&#160;unsigned&#160;short&#160;&gt;::max()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>grayscale</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;short_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a short 2D image layer, but do not render it (use spin/spinOnce to update). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">short_image</td><td>the input data representing the image in unsigned short format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_value</td><td>filter all values in the image to be larger than this minimum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_value</td><td>filter all values in the image to be smaller than this maximum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">grayscale</td><td>show data as grayscale (true) or not (false). Default: false </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="abc30830923155965adaf9a96954c73d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc30830923155965adaf9a96954c73d2">&#9670;&nbsp;</a></span>addText() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addText </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>text</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;line&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D text with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>the X coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>the Y coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">text</td><td>the text string to be displayed </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a71b706f96118b8a1fb40a2a9e474165a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71b706f96118b8a1fb40a2a9e474165a">&#9670;&nbsp;</a></span>addText() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::addText </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>text</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;line&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a 2D text with a given color </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>the X coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>the Y coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">text</td><td>the text string to be displayed </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the red channel of the color that the line should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">g</td><td>the green channel of the color that the line should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>the blue channel of the color that the line should be rendered with (0.0 -&gt; 1.0) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the 2D layer ID where we want the extra information to be drawn. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aee92b2fc2a135119c611e4dbb5639281"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee92b2fc2a135119c611e4dbb5639281">&#9670;&nbsp;</a></span>convertIntensityCloud8uToUChar()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::convertIntensityCloud8uToUChar </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_array&lt; unsigned char &gt;&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Convert the <a class="el" href="structpcl_1_1_intensity8u.html" title="A point structure representing the grayscale intensity in single-channel images. Intensity is represe...">Intensity8u</a> information in a PointCloud&lt;Intensity8u&gt; to an unsigned char array </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input cloud containing the grayscale intensity information </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>a boost shared array of unsigned char type </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>The method assumes that the data array has already been allocated and contains enough space to copy all the data from cloud! </dd></dl>

</div>
</div>
<a id="a3b9c1ff3ca1fe64a54321f3d6da9599c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b9c1ff3ca1fe64a54321f3d6da9599c">&#9670;&nbsp;</a></span>convertIntensityCloudToUChar()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::convertIntensityCloudToUChar </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_array&lt; unsigned char &gt;&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Convert the <a class="el" href="structpcl_1_1_intensity.html" title="A point structure representing the grayscale intensity in single-channel images. Intensity is represe...">Intensity</a> information in a PointCloud&lt;Intensity&gt; to an unsigned char array </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input cloud containing the grayscale intensity information </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>a boost shared array of unsigned char type </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>The method assumes that the data array has already been allocated and contains enough space to copy all the data from cloud! </dd></dl>

</div>
</div>
<a id="ab92156a468bec6ed9424d1d082767c06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab92156a468bec6ed9424d1d082767c06">&#9670;&nbsp;</a></span>convertRGBCloudToUChar()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::convertRGBCloudToUChar </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_array&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Convert the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> information in a PointCloud&lt;T&gt; to an unsigned char array </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input cloud containing the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> information </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>a boost shared array of unsigned char type </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>The method assumes that the data array has already been allocated and contains enough space to copy all the data from cloud! </dd></dl>
<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="keywordtype">int</span> j = 0;</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; cloud.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>.size (); ++i)</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  {</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    data[j++] = cloud.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[i].r;</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    data[j++] = cloud.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[i].g;</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    data[j++] = cloud.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[i].b;</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  }</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a49f2956a29a84bbcb79caec30cf59986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49f2956a29a84bbcb79caec30cf59986">&#9670;&nbsp;</a></span>createLayer()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">LayerMap::iterator pcl::visualization::ImageViewer::createLayer </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>0.5</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>fill_box</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a new 2D rendering layer to the viewer. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the layer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the layer </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer: 0 for invisible, 1 for opaque. (default: 0.5) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fill_box</td><td>set to true to fill in the image with one black box before starting </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ab4473dcb0b7e2d83adb520be23a883f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4473dcb0b7e2d83adb520be23a883f5">&#9670;&nbsp;</a></span>emitKeyboardEvent()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::emitKeyboardEvent </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>event_id</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fire up a keyboard event with a specified event ID </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">event_id</td><td>the id of the event </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a9790aea3227a7974531dcc848a1f172b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9790aea3227a7974531dcc848a1f172b">&#9670;&nbsp;</a></span>emitMouseEvent()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::emitMouseEvent </td>
          <td>(</td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>event_id</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fire up a mouse event with a specified event ID </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">event_id</td><td>the id of the event </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a8635790ba434ac25d5996b6747a35281"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8635790ba434ac25d5996b6747a35281">&#9670;&nbsp;</a></span>markPoint()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::markPoint </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>u</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Vector3ub&#160;</td>
          <td class="paramname"><em>fg_color</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Vector3ub&#160;</td>
          <td class="paramname"><em>bg_color</em> = <code>red_color</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em> = <code>3.0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;points&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the pixel at coordinates(u,v) to color while setting the neighborhood to another </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">u</td><td>the u/x coordinate of the pixel </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>the v/y coordinate of the pixel </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fg_color</td><td>the pixel color </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">bg_color</td><td>the neighborhood color </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the circle radius around the pixel </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "points") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0506f8e1f6d8ba95973dfdfdeb131ba0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0506f8e1f6d8ba95973dfdfdeb131ba0">&#9670;&nbsp;</a></span>markPoints() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::markPoints </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>uv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Vector3ub&#160;</td>
          <td class="paramname"><em>fg_color</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Vector3ub&#160;</td>
          <td class="paramname"><em>bg_color</em> = <code>red_color</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>size</em> = <code>3.0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;markers&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the pixel at coordinates(u,v) to color while setting the neighborhood to another (float coordinates version). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">uv</td><td>the u/x, v/y coordinate of the pixels to be marked </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fg_color</td><td>the pixel color </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">bg_color</td><td>the neighborhood color </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>edge of the square surrounding each pixel </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "markers") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a811c0ab2c8ef24d2edd03f235630121b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a811c0ab2c8ef24d2edd03f235630121b">&#9670;&nbsp;</a></span>markPoints() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::markPoints </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>uv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Vector3ub&#160;</td>
          <td class="paramname"><em>fg_color</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Vector3ub&#160;</td>
          <td class="paramname"><em>bg_color</em> = <code>red_color</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>size</em> = <code>3.0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;markers&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the pixel at coordinates(u,v) to color while setting the neighborhood to another </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">uv</td><td>the u/x, v/y coordinate of the pixels to be marked </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fg_color</td><td>the pixel color </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">bg_color</td><td>the neighborhood color </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>edge of the square surrounding each pixel </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "markers") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a67179cecfc3ea0f0c1e16a33089cb24b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67179cecfc3ea0f0c1e16a33089cb24b">&#9670;&nbsp;</a></span>registerKeyboardCallback() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::signals2::connection pcl::visualization::ImageViewer::registerKeyboardCallback </td>
          <td>(</td>
          <td class="paramtype">boost::function&lt; void(const <a class="el" href="classpcl_1_1visualization_1_1_keyboard_event.html">pcl::visualization::KeyboardEvent</a> &amp;)&gt;&#160;</td>
          <td class="paramname"><em>cb</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Register a callback boost::function for keyboard events </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cb</td><td>the boost function that will be registered as a callback for a keyboard event </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>a connection object that allows to disconnect the callback function. </dd></dl>

</div>
</div>
<a id="a768b636bbac4ee67a5aa86fd4b239b12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a768b636bbac4ee67a5aa86fd4b239b12">&#9670;&nbsp;</a></span>registerKeyboardCallback() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::signals2::connection pcl::visualization::ImageViewer::registerKeyboardCallback </td>
          <td>(</td>
          <td class="paramtype">void(*)(const <a class="el" href="classpcl_1_1visualization_1_1_keyboard_event.html">pcl::visualization::KeyboardEvent</a> &amp;, void *)&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>cookie</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Register a callback function for keyboard events </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>the function that will be registered as a callback for a keyboard event </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cookie</td><td>user data that is passed to the callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>a connection object that allows to disconnect the callback function. </dd></dl>
<div class="fragment"><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;        {</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a768b636bbac4ee67a5aa86fd4b239b12">registerKeyboardCallback</a> (boost::bind (callback, _1, cookie)));</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a768b636bbac4ee67a5aa86fd4b239b12"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a768b636bbac4ee67a5aa86fd4b239b12">pcl::visualization::ImageViewer::registerKeyboardCallback</a></div><div class="ttdeci">boost::signals2::connection registerKeyboardCallback(void(*callback)(const pcl::visualization::KeyboardEvent &amp;, void *), void *cookie=NULL)</div><div class="ttdoc">Register a callback function for keyboard events</div><div class="ttdef"><b>Definition:</b> image_viewer.h:481</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="add4cf1ce0536ae6ba7b42f316e6d368c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add4cf1ce0536ae6ba7b42f316e6d368c">&#9670;&nbsp;</a></span>registerKeyboardCallback() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::signals2::connection pcl::visualization::ImageViewer::registerKeyboardCallback </td>
          <td>(</td>
          <td class="paramtype">void(T::*)(const <a class="el" href="classpcl_1_1visualization_1_1_keyboard_event.html">pcl::visualization::KeyboardEvent</a> &amp;, void *)&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>instance</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>cookie</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Register a callback function for keyboard events </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>the member function that will be registered as a callback for a keyboard event </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>instance to the class that implements the callback function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cookie</td><td>user data that is passed to the callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>a connection object that allows to disconnect the callback function. </dd></dl>
<div class="fragment"><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        {</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a768b636bbac4ee67a5aa86fd4b239b12">registerKeyboardCallback</a> (boost::bind (callback,  boost::ref (instance), _1, cookie)));</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a22fb868c8d32c6498c51184cdf3a2e26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22fb868c8d32c6498c51184cdf3a2e26">&#9670;&nbsp;</a></span>registerMouseCallback() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::signals2::connection pcl::visualization::ImageViewer::registerMouseCallback </td>
          <td>(</td>
          <td class="paramtype">boost::function&lt; void(const <a class="el" href="classpcl_1_1visualization_1_1_mouse_event.html">pcl::visualization::MouseEvent</a> &amp;)&gt;&#160;</td>
          <td class="paramname"><em>cb</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Register a callback function for mouse events </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cb</td><td>the boost function that will be registered as a callback for a mouse event </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>a connection object that allows to disconnect the callback function. </dd></dl>

</div>
</div>
<a id="aea7736ed1e3710dc9fcd210c8a41e509"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea7736ed1e3710dc9fcd210c8a41e509">&#9670;&nbsp;</a></span>registerMouseCallback() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::signals2::connection pcl::visualization::ImageViewer::registerMouseCallback </td>
          <td>(</td>
          <td class="paramtype">void(*)(const <a class="el" href="classpcl_1_1visualization_1_1_mouse_event.html">pcl::visualization::MouseEvent</a> &amp;, void *)&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>cookie</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Register a callback boost::function for mouse events </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>the function that will be registered as a callback for a mouse event </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cookie</td><td>user data that is passed to the callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>a connection object that allows to disconnect the callback function. </dd></dl>
<div class="fragment"><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        {</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#aea7736ed1e3710dc9fcd210c8a41e509">registerMouseCallback</a> (boost::bind (callback, _1, cookie)));</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_aea7736ed1e3710dc9fcd210c8a41e509"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#aea7736ed1e3710dc9fcd210c8a41e509">pcl::visualization::ImageViewer::registerMouseCallback</a></div><div class="ttdeci">boost::signals2::connection registerMouseCallback(void(*callback)(const pcl::visualization::MouseEvent &amp;, void *), void *cookie=NULL)</div><div class="ttdoc">Register a callback boost::function for mouse events</div><div class="ttdef"><b>Definition:</b> image_viewer.h:513</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aae27531d1bf7fe6c2a79320980b301a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae27531d1bf7fe6c2a79320980b301a4">&#9670;&nbsp;</a></span>registerMouseCallback() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::signals2::connection pcl::visualization::ImageViewer::registerMouseCallback </td>
          <td>(</td>
          <td class="paramtype">void(T::*)(const <a class="el" href="classpcl_1_1visualization_1_1_mouse_event.html">pcl::visualization::MouseEvent</a> &amp;, void *)&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>instance</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>cookie</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Register a callback function for mouse events </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>the member function that will be registered as a callback for a mouse event </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>instance to the class that implements the callback function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cookie</td><td>user data that is passed to the callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>a connection object that allows to disconnect the callback function. </dd></dl>
<div class="fragment"><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        {</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#aea7736ed1e3710dc9fcd210c8a41e509">registerMouseCallback</a> (boost::bind (callback, boost::ref (instance), _1, cookie)));</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5d3bc3c84193eaa26cc84820fb22254b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d3bc3c84193eaa26cc84820fb22254b">&#9670;&nbsp;</a></span>removeLayer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::removeLayer </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Remove a 2D layer given by its ID. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ace5662622459d62b330b83d5a544f26a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace5662622459d62b330b83d5a544f26a">&#9670;&nbsp;</a></span>setPosition()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::setPosition </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the position in screen coordinates. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>where to move the window to (X) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>where to move the window to (Y) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ab928954619a61d4d1b6679a421ca8578"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab928954619a61d4d1b6679a421ca8578">&#9670;&nbsp;</a></span>setSize()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::setSize </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>xw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>yw</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the window size in screen coordinates. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">xw</td><td>window size in horizontal (pixels) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">yw</td><td>window size in vertical (pixels) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0bf8630b973a4b0497f241568d0e6baa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bf8630b973a4b0497f241568d0e6baa">&#9670;&nbsp;</a></span>setWindowTitle()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::setWindowTitle </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the window title name </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>the window title </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a2406ecea1e68be3028bb4861478f5c2b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2406ecea1e68be3028bb4861478f5c2b">&#9670;&nbsp;</a></span>showAngleImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showAngleImage </td>
          <td>(</td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;angle_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a 2D image on screen representing angle data. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a96b3ea6d603b69d1615e778a8b44c26c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96b3ea6d603b69d1615e778a8b44c26c">&#9670;&nbsp;</a></span>showCorrespondences()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::visualization::ImageViewer::showCorrespondences </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>source_img</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>target_img</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const pcl::Correspondences &amp;&#160;</td>
          <td class="paramname"><em>correspondences</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nth</em> = <code>1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;correspondences&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add the specified correspondences to the display. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">source_img</td><td>The source <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">target_img</td><td>The target <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">correspondences</td><td>The list of correspondences to display. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nth</td><td>display only the Nth correspondence (e.g., skip the rest) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the layer id (default: "correspondences") </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;{</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <span class="keywordflow">if</span> (correspondences.empty ())</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  {</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::visualization::ImageViewer::addCorrespondences] An empty set of correspondences given! Nothing to display.\n&quot;</span>);</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  }</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160; </div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  <span class="comment">// Check to see if this ID entry already exists (has it been already added to the visualizer?)</span></div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  LayerMap::iterator am_it = std::find_if (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.begin (), <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end (), LayerComparator (layer_id));</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <span class="keywordflow">if</span> (am_it == <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a7874619bb6929047578a1e66596649da">layer_map_</a>.end ())</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  {</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    PCL_DEBUG (<span class="stringliteral">&quot;[pcl::visualization::ImageViewer::addCorrespondences] No layer with ID=&#39;%s&#39; found. Creating new one...\n&quot;</span>, layer_id.c_str ());</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    am_it = <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a49f2956a29a84bbcb79caec30cf59986">createLayer</a> (layer_id, source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>, std::max (source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>, target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>), 1.0, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  }</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  <span class="keywordtype">int</span> src_size = source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a> * 3;</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  <span class="keywordtype">int</span> tgt_size = target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a> * 3;</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160; </div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  <span class="comment">// Set window size</span></div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ab928954619a61d4d1b6679a421ca8578">setSize</a> (source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> , std::max (source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>, target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>));</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160; </div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  <span class="comment">// Set data size</span></div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a> &lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (src_size + tgt_size))</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;  {</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a> = src_size + tgt_size;</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>.reset (<span class="keyword">new</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>[<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a>]);</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  }</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160; </div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  <span class="comment">// Copy data in VTK format</span></div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;  <span class="keywordtype">int</span> j = 0;</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; std::max (source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>, target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>); ++i)</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;  {</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="comment">// Still need to copy the source?</span></div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    <span class="keywordflow">if</span> (i &lt; source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>)</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    {</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> k = 0; k &lt; source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>; ++k)</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;      {</div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j++] = source_img[i * source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + k].r;</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j++] = source_img[i * source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + k].g;</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j++] = source_img[i * source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + k].b;</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;      }</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    }</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    {</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      memcpy (&amp;<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j], 0, source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * 3);</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;      j += source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * 3;</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    }</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="comment">// Still need to copy the target?</span></div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keywordflow">if</span> (i &lt; source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>)</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    {</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> k = 0; k &lt; target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>; ++k)</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;      {</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;        <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j++] = target_img[i * source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + k].r;</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;        <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j++] = target_img[i * source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + k].g;</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;        <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j++] = target_img[i * source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + k].b;</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;      }</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    }</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    {</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;      memcpy (&amp;<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>[j], 0, target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * 3);</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;      j += target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> * 3;</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    }</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;  }</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160; </div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;  <span class="keywordtype">void</span>* data = <span class="keyword">const_cast&lt;</span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span> (<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a69f2c97585c64cfd2554318c626a51a8">data_</a>.get ()));</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;  </div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;  <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;vtkImageData&gt;</a> image = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;vtkImageData&gt;::New</a> ();</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  image-&gt;SetDimensions (source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>, std::max (source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>, target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a>), 1);</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="preprocessor">#if VTK_MAJOR_VERSION &lt; 6</span></div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  image-&gt;SetScalarTypeToUnsignedChar ();</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;  image-&gt;SetNumberOfScalarComponents (3);</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  image-&gt;AllocateScalars ();</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  image-&gt;AllocateScalars (VTK_UNSIGNED_CHAR, 3);</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;  image-&gt;GetPointData ()-&gt;GetScalars ()-&gt;SetVoidArray (data, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a63e797d6b62543b88656892a52acaa13">data_size_</a>, 1);</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;PCLContextImageItem&gt;</a> image_item = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;PCLContextImageItem&gt;::New</a> ();</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;<span class="preprocessor">#if ((VTK_MAJOR_VERSION == 5) &amp;&amp; (VTK_MINOR_VERSION &lt;= 10))</span></div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  <span class="comment">// Now create filter and set previously created transformation</span></div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;  <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#af8028c171e53a93c4d819d63cadbe4a9">algo_</a>-&gt;SetInput (image);</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;  <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#af8028c171e53a93c4d819d63cadbe4a9">algo_</a>-&gt;Update ();</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;  image_item-&gt;set (0, 0, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#af8028c171e53a93c4d819d63cadbe4a9">algo_</a>-&gt;GetOutput ());</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;  image_item-&gt;set (0, 0, image);</div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ad32038d746d8cd0cdd373d683c03c0f8">interactor_style_</a>-&gt;adjustCamera (image, <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#aa8b23b888988eb33de555b0997dab464">ren_</a>);</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;  am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (image_item);</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;  <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#a0537b49cd3ef88f2ab29353c60be8eaa">image_viewer_</a>-&gt;SetSize (image-&gt;GetDimensions ()[0], image-&gt;GetDimensions ()[1]);</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160; </div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;  <span class="comment">// Draw lines between the best corresponding points</span></div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; correspondences.size (); i += nth)</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  {</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <span class="keywordtype">double</span> r, g, b;</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    getRandomColors (r, g, b);</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> u_r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * r);</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> u_g = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * g);</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> u_b = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (255.0 * b);</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Circle&gt;</a> query_circle = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Circle&gt;::New</a> ();</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;    query_circle-&gt;setColors (u_r, u_g, u_b);</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Circle&gt;</a> match_circle = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Circle&gt;::New</a> ();</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    match_circle-&gt;setColors (u_r, u_g, u_b);</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Line&gt;</a> line = <a class="code" href="classvtk_smart_pointer.html">vtkSmartPointer&lt;context_items::Line&gt;::New</a> ();</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;    line-&gt;setColors (u_r, u_g, u_b);</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160; </div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;    <span class="keywordtype">float</span> query_x = correspondences[i].index_query % source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>;</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    <span class="keywordtype">float</span> match_x = correspondences[i].index_match % target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> + source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>;</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;<span class="preprocessor">#if ((VTK_MAJOR_VERSION == 5) &amp;&amp; (VTK_MINOR_VERSION &gt; 10))</span></div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;    <span class="keywordtype">float</span> query_y = correspondences[i].index_query / source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>;</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;    <span class="keywordtype">float</span> match_y = correspondences[i].index_match / target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>;</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;    <span class="keywordtype">float</span> query_y = <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[1] - correspondences[i].index_query / source_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>;</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    <span class="keywordtype">float</span> match_y = <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae041919b2a5c72dd8db64c98456aee0f">getSize</a> ()[1] - correspondences[i].index_match / target_img.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a>;</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160; </div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    query_circle-&gt;set (query_x, query_y, 3.0);</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    match_circle-&gt;set (match_x, match_y, 3.0);</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    line-&gt;set (query_x, query_y, match_x, match_y);</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160; </div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (query_circle);</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (match_circle);</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    am_it-&gt;actor-&gt;GetScene ()-&gt;AddItem (line);</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  }</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  </div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_a0537b49cd3ef88f2ab29353c60be8eaa"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#a0537b49cd3ef88f2ab29353c60be8eaa">pcl::visualization::ImageViewer::image_viewer_</a></div><div class="ttdeci">vtkSmartPointer&lt; vtkImageViewer &gt; image_viewer_</div><div class="ttdoc">The ImageViewer widget.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:1008</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_aa8b23b888988eb33de555b0997dab464"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#aa8b23b888988eb33de555b0997dab464">pcl::visualization::ImageViewer::ren_</a></div><div class="ttdeci">vtkSmartPointer&lt; vtkRenderer &gt; ren_</div><div class="ttdoc">The renderer.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:1014</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_ab928954619a61d4d1b6679a421ca8578"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#ab928954619a61d4d1b6679a421ca8578">pcl::visualization::ImageViewer::setSize</a></div><div class="ttdeci">void setSize(int xw, int yw)</div><div class="ttdoc">Set the window size in screen coordinates.</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_ad32038d746d8cd0cdd373d683c03c0f8"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#ad32038d746d8cd0cdd373d683c03c0f8">pcl::visualization::ImageViewer::interactor_style_</a></div><div class="ttdeci">vtkSmartPointer&lt; ImageViewerInteractorStyle &gt; interactor_style_</div><div class="ttdoc">The interactor style.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:1021</div></div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_af8028c171e53a93c4d819d63cadbe4a9"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#af8028c171e53a93c4d819d63cadbe4a9">pcl::visualization::ImageViewer::algo_</a></div><div class="ttdeci">vtkSmartPointer&lt; vtkImageFlip &gt; algo_</div><div class="ttdoc">Image reslice, used for flipping the image.</div><div class="ttdef"><b>Definition:</b> image_viewer.h:1042</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a775047bc2b18889522caab74751ae6f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a775047bc2b18889522caab74751ae6f3">&#9670;&nbsp;</a></span>showFloatImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showFloatImage </td>
          <td>(</td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>min_value</em> = <code>std::numeric_limits&lt;&#160;float&#160;&gt;::min()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>max_value</em> = <code>std::numeric_limits&lt;&#160;float&#160;&gt;::max()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>grayscale</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;float_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a 2D image (float) on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image in float format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_value</td><td>filter all values in the image to be larger than this minimum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_value</td><td>filter all values in the image to be smaller than this maximum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">grayscale</td><td>show data as grayscale (true) or not (false). Default: false </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a83262fe4addf159963e9eeb5bc918153"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83262fe4addf159963e9eeb5bc918153">&#9670;&nbsp;</a></span>showHalfAngleImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showHalfAngleImage </td>
          <td>(</td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;half_angle_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a 2D image on screen representing half angle data. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aca066cf44d842ea7e8a11da86fe56e48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca066cf44d842ea7e8a11da86fe56e48">&#9670;&nbsp;</a></span>showMonoImage() <span class="overload">[1/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a monochrome 2D image on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the grayscale point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="afbcd91e2f16a9e11e72aec9e5fb74317"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbcd91e2f16a9e11e72aec9e5fb74317">&#9670;&nbsp;</a></span>showMonoImage() <span class="overload">[2/5]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity.html">pcl::Intensity</a> &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Show a monochrome 2D image on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the grayscale point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        {</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ab3d46fb79a3a66b9a577808ed7169c9f">showMonoImage</a> (*cloud, layer_id, opacity));</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_ab3d46fb79a3a66b9a577808ed7169c9f"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#ab3d46fb79a3a66b9a577808ed7169c9f">pcl::visualization::ImageViewer::showMonoImage</a></div><div class="ttdeci">void showMonoImage(const unsigned char *data, unsigned width, unsigned height, const std::string &amp;layer_id=&quot;mono_image&quot;, double opacity=1.0)</div><div class="ttdoc">Show a monochrome 2D image on screen.</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aac22a20ad2eb7e466966d74a043a52cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac22a20ad2eb7e466966d74a043a52cb">&#9670;&nbsp;</a></span>showMonoImage() <span class="overload">[3/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a monochrome 2D image on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the grayscale point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a7dd0425191252de387726ab970b330a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dd0425191252de387726ab970b330a7">&#9670;&nbsp;</a></span>showMonoImage() <span class="overload">[4/5]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showMonoImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_intensity8u.html">pcl::Intensity8u</a> &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Show a monochrome 2D image on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the grayscale point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        {</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ab3d46fb79a3a66b9a577808ed7169c9f">showMonoImage</a> (*cloud, layer_id, opacity));</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ab3d46fb79a3a66b9a577808ed7169c9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3d46fb79a3a66b9a577808ed7169c9f">&#9670;&nbsp;</a></span>showMonoImage() <span class="overload">[5/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showMonoImage </td>
          <td>(</td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;mono_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a monochrome 2D image on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a58b93c1bd507c07366a80e52f8c20a61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58b93c1bd507c07366a80e52f8c20a61">&#9670;&nbsp;</a></span>showRGBImage() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showRGBImage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rgb_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a 2D image on screen, obtained from the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> channel of a point cloud. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;{</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  addRGBImage&lt;T&gt; (cloud, layer_id, opacity);</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <a class="code" href="classpcl_1_1visualization_1_1_image_viewer.html#ae9053b46268ff4cbb3cb9200099302a0">render</a> ();</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1visualization_1_1_image_viewer_html_ae9053b46268ff4cbb3cb9200099302a0"><div class="ttname"><a href="classpcl_1_1visualization_1_1_image_viewer.html#ae9053b46268ff4cbb3cb9200099302a0">pcl::visualization::ImageViewer::render</a></div><div class="ttdeci">void render()</div><div class="ttdoc">Trigger a render call.</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3d4270eb07ff05d02ec9ddbb417691c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d4270eb07ff05d02ec9ddbb417691c7">&#9670;&nbsp;</a></span>showRGBImage() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showRGBImage </td>
          <td>(</td>
          <td class="paramtype">const typename <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; T &gt;::ConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rgb_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Show a 2D image on screen, obtained from the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> channel of a point cloud. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the input data representing the <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> point cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        {</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;          <span class="keywordflow">return</span> (showRGBImage&lt;T&gt; (*cloud, layer_id, opacity));</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a33e79bc49719cc7e2005f3cf76bff1f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33e79bc49719cc7e2005f3cf76bff1f6">&#9670;&nbsp;</a></span>showRGBImage() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showRGBImage </td>
          <td>(</td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;rgb_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a 2D <a class="el" href="structpcl_1_1_r_g_b.html" title="A structure representing RGB color information.">RGB</a> image on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>the input data representing the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a8e6d9e7fa50c79a804230474fe572b98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e6d9e7fa50c79a804230474fe572b98">&#9670;&nbsp;</a></span>showShortImage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::showShortImage </td>
          <td>(</td>
          <td class="paramtype">const unsigned short *&#160;</td>
          <td class="paramname"><em>short_image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short&#160;</td>
          <td class="paramname"><em>min_value</em> = <code>std::numeric_limits&lt;&#160;unsigned&#160;short&#160;&gt;::min()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short&#160;</td>
          <td class="paramname"><em>max_value</em> = <code>std::numeric_limits&lt;&#160;unsigned&#160;short&#160;&gt;::max()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>grayscale</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>layer_id</em> = <code>&quot;short_image&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>opacity</em> = <code>1.0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Show a 2D image (unsigned short) on screen. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">short_image</td><td>the input data representing the image in unsigned short format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>the width of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>the height of the image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_value</td><td>filter all values in the image to be larger than this minimum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_value</td><td>filter all values in the image to be smaller than this maximum value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">grayscale</td><td>show data as grayscale (true) or not (false). Default: false </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">layer_id</td><td>the name of the layer (default: "image") </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>the opacity of the layer (default: 1.0) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a3eb6e9560da820df593c85dbbd47af1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3eb6e9560da820df593c85dbbd47af1c">&#9670;&nbsp;</a></span>spinOnce()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::visualization::ImageViewer::spinOnce </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>time</em> = <code>1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>force_redraw</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Spin once method. Calls the interactor and updates the screen once. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">time</td><td>- How long (in ms) should the visualization loop be allowed to run. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">force_redraw</td><td>- if false it might return without doing anything if the interactor's framerate does not require a redraw yet. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>visualization/include/pcl/visualization/<a class="el" href="image__viewer_8h_source.html">image_viewer.h</a></li>
<li>visualization/include/pcl/visualization/impl/<a class="el" href="image__viewer_8hpp_source.html">image_viewer.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>visualization</b></li><li class="navelem"><a class="el" href="classpcl_1_1visualization_1_1_image_viewer.html">ImageViewer</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
